繁体   English   中英

成为默认的构造函数:clang产生解析错误,而gcc没有

[英]Befriend default constructor: clang produces parse error while gcc did not

我遇到了一个令人困惑的问题。 对于以下代码段:

class A { };
class E
{
    friend A::A() throw();
};

我使用Clang 6编译了此代码示例,并得到“错误:constexpr声明之后是'A'的非constexpr声明”。 我也尝试了clang 4.0,clang 5.0和gcc 5.4,并且没有这种错误。 这是Clang6中的错误吗?

来自class.ctor#7

隐式定义的默认构造函数是constexpr

由于class A没有用户声明的构造函数,因此将不带参数的非显式构造函数隐式声明为默认值

然而,

friend A::A() throw();

您显式声明A::A()与隐式声明的构造函数(这是constexpr constructor )不匹配。

特别:

它的功能体应为默认值,或者其功能体的复合声明应满足constexpr函数的功能体的要求;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM