struct A
{
enum InnerEnum { X };
A(InnerEnum x)
{}
};
int main()
{
A a(X);
}
संकलक शिकायत: error C2065: 'X' : undeclared identifier
सी ++ 11 इस तरह नाम लुकअप का समर्थन क्यों नहीं करता है?
संकलक जानता है क्या निर्माता के पैरामीटर प्रकार है, इसलिए जब मैं तर्क के रूप में एक्स गुजरती हैं, संकलक पता होना चाहिए यह एक वैध तर्क है।
मुझे पता है कि यह एडीएल नहीं है (तर्क-निर्भर नाम लुकअप, जिसे कोएनिग लुकअप भी कहा जाता है), लेकिन मुझे लगता है कि यह उपयोगी और सुंदर काम है। क्योंकि मुझे निम्नानुसार लिखना नहीं है:
A a(A::X);
मुझे लगता है कि इस तरह के मामले में एडीएल नियम सामान्यीकृत किया जाना चाहिए।
क्या मैं सही हूँ?
यह एडीएल के विपरीत की तरह है ... एफडीएल (फ़ंक्शन आश्रित लुकअप)। –
क्या आपने सोचा है कि यह कैसे लागू होगा जब आपके पास 'एक्स' नामक स्थानीय चर भी होगा? और इस पर ध्यान दिए बिना, जिस तरह से मैंने आपका प्रश्न पढ़ा है, आप कह रहे हैं कि यह अमान्य सी ++ है, और पूछ रहा है कि सी ++ मानक बदलना चाहिए या नहीं। इसके लिए यह गलत जगह है। – hvd
धन्यवाद, एचवीडी। आपने हमें एक दृढ़ तर्क दिया है। – xmllmx