देखो:अस्थिर और आभासी सदस्यों द्वारा प्रभावित सी ++ संश्लेषित चालक कन्स्ट्रक्टर कैसा है? निम्नलिखित कोड पर
struct node
{
node();
//node(const node&); //#1
//node(node&&); //#2
virtual //#3
~node();
node*
volatile //#4
next;
};
int main()
{
node m(node()); //#5
node n=node(); //#6
}
साथ संकलित जब जीसीसी-4.6.1 यह निम्न त्रुटि पैदा करता है:
g++ -g --std=c++0x -c -o node.o node.cc
node.cc: In constructor node::node(node&&):
node.cc:3:8: error: expression node::next has side-effects
node.cc: In function int main():
node.cc:18:14: note: synthesized method node::node(node&&) first required here
मैं समझता हूँ संकलक डिफ़ॉल्ट चाल बनाने के लिए विफल रहता है या पर निर्माता के रूप में कॉपी लाइन # 6, अगर मैं लाइन # 1 या # 2 को अपूर्ण करता हूं तो यह ठीक से संकलित होता है, यह स्पष्ट है। कोड C++ 0x विकल्प के बिना ठीक संकलित करता है, इसलिए त्रुटि डिफ़ॉल्ट चाल कन्स्ट्रक्टर से संबंधित है।
हालांकि, नोड वर्ग में क्या डिफ़ॉल्ट चाल निर्माता बनने से रोकता है? अगर मैं किसी भी पंक्ति # 3 या # 4 पर टिप्पणी करता हूं (यानी विनाशक गैर-वर्चुअल बनाते हैं या डेटा सदस्य को अस्थिर बनाते हैं) तो यह फिर से संकलित होता है, तो क्या यह इन दोनों का संयोजन संकलित नहीं करता है?
एक और पहेली, रेखा # 5 संकलन त्रुटि का कारण नहीं है, लाइन # 6 से अलग क्या है? क्या यह सभी जीसीसी के लिए विशिष्ट है? या जीसीसी-4.6.1?
आप 'मुख्य' के रिटर्न प्रकार को भूल गए हैं skippy –