S不是字面型吗?

时间:2013-12-23 13:25:06

标签: c++ c++11 constexpr

此代码不在Coliru中编译,尽管它似乎符合iso§5.19p2第9个项目符号和iso§3.9p10,即S是文字类型,因此,{ {1}}应被视为常量表达式。特别是,iso§3.9p10项目符号第3点没有说明有关联合成员的任何内容。

S a(1);

1 个答案:

答案 0 :(得分:9)

这是标准化的7.1.5 / 4([dcl.constexpr],“constexpr说明符”):

  

constexpr 构造函数的定义应满足以下约束条件:

     
      
  • [...]

  •   
  • 应初始化每个非静态数据成员和基类子对象

  •   
  • [...]

  •