特殊的成员函数是“编译器使用时会自动生成的函数,但程序员没有显式声明这些函数”。
functions
详细情况见C++11标准第12节:
默认构造函数(12.1)、复制构造函数和复制赋值操作符(12.8)、移动构造函数和移动赋值运算符(12.8)和析构函数(12.4)是特殊的成员函数。注意:当程序没有显式声明这些成员函数时,实现将为某些类类型隐式声明这些成员函数。如果它们是odr使用的(3.2),则实现将隐式定义它们。见12.1、12.4和12.8。-end注记
在编译时,有哪些已知的方法可以识别所有生成的特殊成员函数?
我最喜欢的编译器是gcc和clang。
发布于 2014-09-13 09:14:55
在c++11中,header 定义了一组以下函数:
is_constructible
is_default_contructible
is_copy_contructible
is_move_contructible
is_assignable
is_copy_assignable
is_move_assignable
is_destructible您可以使用它们在编译时测试隐式生成的方法是否存在,例如:
std::is_constructible<ClassName>::valuehttps://stackoverflow.com/questions/25821495
复制相似问题