使用带圆括号 ( ) 的构造函数参数初始化 in-class 成员?

Initialising in-class member with constructor arguments with round ( ) brackets?

对不起,我已经有一段时间没有编写 C++ 程序了,我想更新一下我在这里违反的确切规则的知识:

我能做到:

int main()
{
    int a(5);
}

但做不到:

struct Foo
{
    int a(5); // Error: expected a type specifier / Error: syntax error, 'constant'
}

我正在尝试重新获得一些丢失的知识,有人可以告诉我不允许这样做的规则吗?我很确定这里会有关于它的问题,我找不到它。我唯一记得的是委员会在 class 构造函数参数中进行了辩论(我认为是针对 C++11)并引入了新的波浪括号构造函数初始化器,如 int a{5};但我想知道为什么 int a(5); class 内不允许。这在 C++ 中一直是不允许的吗?

一种令人烦恼的解析。默认成员初始值设定项中的名称应该在已完成的 class 中查找,因为它们应该模仿构造函数初始值设定项。使用 (),编译器将无法弄清楚它在解析什么,因为它可以引用稍后在 class:

中声明的内容
struct X {
    int f(x); // function or data member?
    static const int x = 1;
};