#include <iostream>
using namespace std;
struct Y;
struct X
{
X(const Y&) { cout << "converting constructor" << endl; }
};
struct Y
{
operator X() { cout << "conversion function" << endl; }
};
void f(X x) {}
int main()
{
Y y;
f(y);
}
रूपांतरण समारोह ऊपर में, मेरा संकलक (जीसीसी 4.6.1) द्वारा निर्माता परिवर्तित करने को प्राथमिकता दी गई है लेकिन मानक में यह कहा गया है कि:सी ++ 11: पास-बाय-वैल्यू पैरामीटर के आरंभ में कन्स्ट्रक्टर और रूपांतरण फ़ंक्शन को कनवर्ट करने के बीच अस्पष्टता?
User-defined conversions are applied only where they are unambiguous
यह प्रतीत होता है कि इस मामले में अस्पष्टता है। क्या कोई विरोधाभास समझा सकता है?
मुझे उपरोक्त संकलन करने की उम्मीद नहीं होगी। मुझे यह भी यकीन है कि साल पहले स्कॉट मेयर्स ने इस विशिष्ट उदाहरण के बारे में लिखा था और कहा था कि यह संकलित नहीं होगा। मैं क्या खो रहा हूँ?
Btw, वहाँ कुछ भी नहीं C++ 11 कोड sample.The कोड में विशिष्ट है भी C++ 03 में मान्य है। –
इसे डाउनवॉटिंग का कारण क्या है? जब आप इंगित करने के लिए आप क्या महसूस गलत है और अगर आप downvote को न्यायोचित ठहरा के लिए किसी भी तार्किक/तकनीकी कारणों से नहीं सोच सकते हैं, अपने आप को downvoting के लिए योग्य नहीं पर विचार करें downvote कारणों का उल्लेख करें। –
मुझे खेद है। मैंने सोचा कि जिस कारण से मैंने इसे कम किया है, वह पहले ही स्वीकार किए गए उत्तर में दिया गया है। कन्स्ट्रक्टर * * रूपांतरण द्वारा उपयोग किया जा सकता है। लेकिन यह पसंद नहीं है। –