提问人:Fedor 提问时间:1/25/2022 更新时间:1/25/2022 访问量:112
在委托给复制/移动构造函数的情况下复制/移动省略
Copy/move elision in case of delegating to a copy/move constructor
问:
在下面的程序中,构造函数将调用委托给复制/移动构造函数,这两个构造函数都被显式删除:A::A(int)
struct A;
A f();
struct A {
A() {}
A(int) : A(f()) {}
A(const A&) = delete;
A(A&&) = delete;
};
尽管如此,GCC 和 MSVC 都在没有警告的情况下接受该程序。我想他们这样做会考虑复制/移动省略规则。
但是 Clang 拒绝了这个程序,因为
error: call to deleted constructor of 'A'
演示:https://gcc.godbolt.org/z/MjGMaeGrn
哪个编译器就在这里?
答: 暂无答案
评论