|
|
1
14
这是C++的“最烦人的解析”,一个快速的谷歌应该会带来大量的点击和大量的细节。基本答案是,是的,编译器 是 把它当作函数声明来处理,而C++则要求它这样做。您的编译器没有任何问题(至少在这方面)。 如果有什么安慰的话,你会遇到很多优秀的同伴。事实上,C++0x增加了一个新的括号初始化语法,这在很大程度上是因为它避免了这种歧义。使用它,您可以编写如下内容:
这将清楚地表明大括号的内容是用于初始化的值
编辑:重读N3092,约翰内斯(和往常一样)非常正确。适用的语言是(_§8.5.4/3/5):“如果t具有初始值设定项列表构造函数,则参数列表将初始值设定项列表作为单个参数组成;否则,参数列表将由初始值设定项列表的元素组成。”
所以,因为
我为不正确的建议修复方法道歉——在这种情况下,更糟的是,它混淆了一个问题,这个问题本身可能过于混乱,如果有任何问题需要仔细澄清,特别是在接下来的几年里。 |