今天当我阅读 C ++ Primer 时,它说课堂初始化程序不能使用()我在Stackoverflow上搜索过and find a similar question here。接受的答案是:原因可能是声明成员函数和定义类型成员之间存在歧义。但是我不完全同意他。我尝试以下代码:
struct Sales_data
{
int i(5); //this line can't be regard as a function
};
但是编译器仍然抱怨。谁能告诉我为什么。
编译器:clang ++版本:3-4
答案 0 :(得分:7)
语言不允许这样做。原因是有些情况下它不能从函数声明中消除歧义:
struct foo
{
int bar();
};
因此,有时允许()
无效,而不是复制整个most vexing parse惨败,而是直接禁止。