该规范似乎没有对文字类类型的成员函数施加任何约束。
关于这个我有两个问题
,Q1),对于我可以加入的成员函数,我有完全的自由吗?
Q2()如何验证类是否为文字类型?(可能的方法:定义一个constexpr对象并检查它是否编译?)
我看到的文字类的唯一约束是:
·所有数据成员都必须具有文字类型。
类必须至少有一个constexpr构造函数。
·如果数据成员具有类内初始化器,则内建类型成员的初始化程序必须是常量表达式,或者如果成员具有类类型,则初始化器必须使用成员自己的constexpr构造函数。
类必须为其析构函数使用默认定义,析构函数是销毁类类型对象的成员
(资料来源: C++ Primer,第5版)
发布于 2019-06-06 01:52:25
Q1。是的,您可以拥有任何您喜欢的方法(不包括具有约束的构造函数/析构函数)。即使包括virtual方法,如果构造函数是constexpr的话。
Q2。正如您所说,定义该类型的constexpr变量。如果没有诊断消息(编译器是一致的),那么类型肯定是LiteralType。请注意,类型可能是文字的,但由于其他原因,代码会失败编译。
在我看来,在标准中的定义比你引用的定义要清晰一些。例如,在某些情况下,不需要constexpr构造函数(例如闭包或聚合)。
https://stackoverflow.com/questions/56469764
复制相似问题