提问人:Fedor 提问时间:5/23/2022 更新时间:5/23/2022 访问量:170
类模板中的常规复制构造函数不能默认吗?
Can not general copy constructor in class template be defaulted?
问:
在下面的程序中,struct template 有一个来自 的构造函数。因为它应该是 copy-constructor,可以默认为:A
const A<int> &
A<int>
template<typename T>
struct A {
A() {}
A(const A<int> &) = default;
};
int main() {
A<int> a;
}
此程序被 Clang 接受,但 GCC 和 MSVC 都拒绝它并显示错误:
error C2610: 'A<T>::A(const A<int> &)': is not a special member function or comparison operator which can be defaulted
note: see reference to class template instantiation 'A<T>' being compiled
演示:https://gcc.godbolt.org/z/Mn6nMbe1x
哪个编译器就在这里?
答: 暂无答案
评论
A<int>
A<T>
const &
A(A<int> &&) = default;
A<float> a;
A<int> a;
A(const A<int> &) = default;
<>
A(const A &)
A(const A<T> &