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

Why in-class initializer can't use ( )

本文关键字:不能 为什么      更新时间:2023-10-16

今天当我阅读C++Primer时,它说类初始化器中的不能使用()我在Stackoverflow上搜索过,在这里找到了类似的问题。公认的答案是:原因可能是成员函数声明和类型成员的<strong]定义之间存在歧义。但我并不完全同意他的观点。我尝试以下代码:>

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

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

该语言不允许使用它。原因是在某些情况下,它无法从函数声明中消除歧义:

struct foo
{
  int bar();
};

因此,与其通过允许()有时工作来复制整个最令人烦恼的解析惨败,不如直接禁止它。