2011-08-29 14 views
11

जीसीसी 4.5 मुझे ऐसा करते हैं नहीं करता है:क्या मैं कक्षा के शरीर में एक निजी कन्स्ट्रक्टर डिफ़ॉल्ट कर सकता हूं या नहीं?

class foo { 
public: 
    foo() = default; 

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

ऐसा नहीं है कि शिकायत:

error: 'foo::foo(const foo&)' declared with non-public access cannot be defaulted in the class body
error: 'foo& foo::operator=(const foo&)' declared with non-public access cannot be defaulted in the class body

हालांकि, जीसीसी 4.6 मुझे यह काम करने दिया। कौनसा सही है?

उत्तर

10

एन 32 9 1 में कुछ भी नहीं है जो कहता है कि आप कुछ private और default घोषित नहीं कर सकते हैं। ध्यान दें कि यह धारा 12.2, अनुच्छेद 2 में विनिर्देश के लिए बदलें; पहले के संस्करणों ने कहा कि वे सार्वजनिक होना चाहिए।

+0

कभी-कभी निजी में डिफ़ॉल्ट होना अच्छा लगता है ... –

+4

"पानी पर चलना और विनिर्देश से सॉफ़्टवेयर विकसित करना आसान है यदि दोनों जमे हुए हैं।" - ई। बर्र्ड। –

संबंधित मुद्दे

 संबंधित मुद्दे