tho*_*mas 20 c++ gcc default-constructor c++11 gcc4.8
以下C++ 11代码在我的GCC 4.8上成功编译:
struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;
int main() { }
Run Code Online (Sandbox Code Playgroud)
但是,以下给出了编译错误:
struct NonStack
{
private:
NonStack(){}
};
NonStack a;
int main() { }
Run Code Online (Sandbox Code Playgroud)
为什么第一个成功?私有默认构造函数不应该通过禁止创建对象NonStack a;吗?
Pra*_*ian 17
这是gcc bug 54812,编译器无法尊重明确默认的特殊成员函数的访问说明符.错误56429,被标记为前一个的副本,其测试用例几乎与问题中的示例相同.
解决方案是升级到gcc4.9,它解决了这个问题.或者为构造函数创建一个空体,而不是像第二个例子中那样显式地默认它.
| 归档时间: |
|
| 查看次数: |
2044 次 |
| 最近记录: |