默认生成的复制构造函数是常量表达式的规则是什么?

时间:2018-01-05 12:16:53

标签: c++ c++14 constexpr

对于struct echo "last element" ; ,编译器默认生成复制构造函数。 gcc和clang似乎都将它们定义为Alive demo)。现在我想知道默认生成的构造函数是常量表达式的规则是什么?

constexpr

1 个答案:

答案 0 :(得分:1)

是的,编译器可以生成默认构造函数constexpr。见[class.ctor#7]

  

如果该用户编写的默认构造函数满足constexpr构造函数的要求,则隐式定义的默认构造函数为constexpr。

但是,非文字类型的类仍然可以有constexpr构造函数,它只是不能默认。见[dcl.fct.def#default-3]

  

未定义为已删除的显式默认函数只有在被隐式声明为constexpr时才可以声明为constexpr。   如果函数在其第一个声明中显式默认,则隐式声明将隐含地认为是constexpr。

相关问题