我一直在N4713中寻找这个超过两个小时但无济于事。
答案 0 :(得分:9)
我有一个C ++ 14草案,在7.1.6.1 [dcl.type.cv]中说:
如8.5中所述,定义了一个对象或子对象 const限定类型必须指定初始值设定项或受其约束 缺省初始化
8.5 [dcl.init]说(第7条):
默认初始化T类型的对象意味着:
[对于非类,非数组类型]:
...没有执行初始化
紧接着:
如果程序要求对const限定类型T的对象进行默认初始化,则T应为类类型 使用用户提供的默认构造函数。
因此const
内置函数必须有一个初始化程序,否则它将被默认初始化并且不允许。
答案 1 :(得分:4)
它在N4713中以相当间接的方式措辞[dcl.init] 11.6 / 7:
如果程序要求对const限定类型
T
的对象进行默认初始化,T
应为const-default- 可构造的类型或其数组。
不提供初始化会导致对象默认初始化。因此,如果它具有const
合格且内置类型,则违反了" will"以上规则。