【问题标题】:Why in-class initializer can't use ( ) [duplicate]为什么类内初始化程序不能使用()[重复]
【发布时间】:2015-06-09 10:02:03
【问题描述】:

今天当我阅读 C++ Primer 时,它说 in-class initializer 不能使用 () 我在 Stackoverflow 上搜索过 @987654321 @.And 公认的答案说:原因可能是成员函数的声明类型成员的定义之间存在歧义。但我不完整同意他。我尝试以下代码:

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

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

【问题讨论】:

    标签: c++


    【解决方案1】:

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

    struct foo
    {
      int bar();
    };
    

    因此,有时允许() 工作,而不是复制整个most vexing parse 惨败,而是完全不允许这样做。

    【讨论】:

    • 更多关于这个决定背后的原因可以在proposal N2756Problem 1部分找到。
    猜你喜欢
    • 2021-12-19
    • 2013-04-26
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多