निम्नलिखित कोड पर विचार करें:क्या संदर्भ में अस्थायी बाध्यकारी सी ++ में एक प्रतिलिपि बनाने की आवश्यकता है?
class A {
A(const A&);
public:
A() {}
};
int main() {
const A &a = A();
}
इस कोड जीसीसी 4.7.2 के साथ ठीक संकलित है, लेकिन निम्न त्रुटि के साथ विजुअल C++ 2010 को संकलित करने में विफल रहता है:
test.cc(8) : error C2248: 'A::A' : cannot access private member declared in class 'A'
test.cc(2) : see declaration of 'A::A'
test.cc(1) : see declaration of 'A'
तो यह है के लिए आवश्यक है संदर्भ में अस्थायी बाध्य करते समय एक प्रतिलिपि बनाने योग्य सुलभ है?
यह कुछ हद तक मेरे पिछले प्रश्न से संबंधित है:
Is there a way to disable binding a temporary to a const reference?
हां, कॉपी सीटीआर निजी है और जानबूझकर लागू नहीं किया गया है। – vitaut
क्या आपने अभी 'ए() की कोशिश की है। 'यह संभव है कि प्रतिलिपि बनाने के लिए प्रतिलिपि बनाने के लिए प्रतिलिपि बनाने की आवश्यकता हो। –
विजुअल सी ++ 2012 कोड स्वीकार करता है। –