簡體   English   中英

我可以在類體中默認私有構造函數嗎?

[英]Can I default a private constructor in the class body or not?

GCC 4.5不允許我這樣做:

class foo {
public:
    foo() = default;

private:
    foo(foo const&) = default;
    foo& operator=(foo const&) = default;
};

它抱怨說:

錯誤:使用非公共訪問聲明的'foo :: foo(const foo&)'不能在類體中默認
錯誤:聲明為非公共訪問的'foo&foo :: operator =(const foo&)'不能在類體中默認

但是,GCC 4.6讓我這樣做。 哪一個是正確的?

N3291中沒有任何內容表明您無法聲明privatedefault 請注意,這是對規范的更改 ,見第8.4.2節第2段; 早期版本說他們必須公開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM