为什么类内初始值设定项不能使用()

时间:2015-04-04 13:28:41

标签: c++

今天当我阅读 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

1 个答案:

答案 0 :(得分:7)

语言不允许这样做。原因是有些情况下它不能从函数声明中消除歧义:

struct foo
{
  int bar();
};

因此,有时允许()无效,而不是复制整个most vexing parse惨败,而是直接禁止。