关于字面值类型的类的注意事项

1、字面值类型的类可能包含constexpr函数成员,这种成员必须满足constexpr函数的所有要求,它们是隐式const的,constexpr函数返回类型和参数都是字面值类型。

2、数据成员时字面值的聚合类,就是字面值常量类。当然,若不是聚合类,符合以下几条条件也是字面值常量类:1)数据成员全是字面值类型;2)类中至少包含一个constexpr函数;3)若类内的数据成员含有类内初始值,那么内置类型的成员必须是常量表达式;若成员属于某种类型,初始值必须使用自己类型的constexpr构造函数。4)类必须有自己的析构函数,用来销毁对象

3、构造函数不能是const,但是字面值常量类的构造函数可以是constexpr函数。实际上,字面值常量类必须至少包含一个constexpr构造函数

4、constexpr构造函数必须初始化每个数据成员,初始值或者是一条常量表达式,或者使用constexpr构造函数

5、constexpr构造函数用于生成constexpr对象以及constexpr函数的参数或者返回类型。

原文地址:https://www.cnblogs.com/Dark-King/p/9519823.html