C++ 模板继承与拷贝构造:一个令人费解的 static_assert
2025-06-10

本文探讨了一个C++模板继承中关于拷贝构造函数的令人费解的问题。`Derived`类继承自`Base`类,`Base`类的拷贝构造函数被删除。然而,`Derived`类定义了自己的拷贝构造函数,即使该构造函数尝试拷贝`Base`类的不可拷贝对象,`std::is_copy_constructible`仍然返回true。这是因为编译器只检查是否存在非删除的拷贝构造函数,而不检查其可否实例化。作者进一步讨论了显式定义拷贝构造函数和隐式定义拷贝构造函数的区别,以及将拷贝构造函数定义移出类的影响。
开发
拷贝构造