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

ice*_*y96 0 c++

今天当我阅读C++ Primer时,它说类内初始化程序不能使用()我在Stackoverflow上搜索并在这里找到类似的问题.并且接受的答案说:原因可能是声明之间有一个模糊的成员函数和类型成员的定义.但我不完全同意他.我尝试以下代码:

struct Sales_data
{
    int i(5); //this line can't be regard as a function
};
Run Code Online (Sandbox Code Playgroud)

但是编译器仍然抱怨.谁能告诉我为什么.\编译器:clang ++版本:3-4

jua*_*nza 6

语言不允许这样做.原因是存在无法从函数声明中消除歧义的情况:

struct foo
{
  int bar();
};
Run Code Online (Sandbox Code Playgroud)

因此,不是通过允许有时工作来复制整个最令人烦恼的解析惨败(),而是彻底禁止.