字面值类型:算术类型、引用、指针。
字面值常量类型:const 字面值类型。
满足以下条件的类是字面值常量类:
- 满足这个条件的是:数据成员都是字面值类型的聚合类。
- 满足以下条件的也是:
- 数据成员都是字面值类型
- 至少有一个constexpr构造函数
- 数据成员要么有constexpr类型类内初始值,要么由constexpr型构造函数初始化。
- 使用默认的析构函数
constexpr函数是最多只有一条return语句。
class Debug {
public:
constexpr Debug(bool b = true) : hw(b), io(b), other(b) {}
constexpr Debug(bool h, bool i, bool o) : hw(h), io(i), other(o) {}
constexpr bool any() { return hw || io || other;}
private:
bool hw; // 字面值类型
bool io;
bool other;
}