यह मेरी समझ है कि किसी वस्तु/चर के प्रकार से पूछताछ करने के लिए decltype का उपयोग किया जाता है और इसी तरह।गिरावट की उपस्थिति में स्कोप रिज़ॉल्यूशन विफल क्यों होता है?
जैसे कि निम्न विकिपीडिया पर उपस्थित उदाहरण, से:
int i;
decltype(i) x3; // type is int
मुझे लगता है मैं कुछ इस तरह कर सकता है ग्रहण किया:
class A
{
public:
int a, b;
};
template<typename T>
struct IsClass
{
enum { Yes = std::is_class<T>::value };
enum { No = !Yes };
};
std::vector<A> v;
auto it = v.begin();
IsClass<decltype(it)::value_type>::Yes
क्योंकि के बाद यह सब लाइन कानूनी है:
IsClass<std::vector<A>::iterator::value_type>::Yes
हां यह संकलित नहीं करेगा, निम्नलिखित का हवाला देते हुए: error C2039: 'value_type' : is not a member of '
वैश्विक नामस्थान '' `
किसी भी विचार के कारण कि गिरावट की उपस्थिति में इस तरह से व्यवहार करने के लिए स्कोप रिज़ॉल्यूशन क्यों किया गया था?
पी.एस: यदि यह
'gcc' और' clang' इस स्वीकार करने के लिए लग रहे हैं: http://coliru.stacked-crooked.com/view?id=bc884ca6b1f51d36c231f2eb08dec3ad-f674c1a6d04c632b71a62362c0ccfc51 –
@ShafikYaghmour मैं सिर्फ इस MSVC2012 में जो मैं (मैं उपयोग कर रहा हूँ चिपकाया इस प्रभाव में एक नोट जोड़ा) और यह संकलित नहीं करता है। – Borgleader
एमएसवीसी हालांकि चूसता है, उन्होंने जीसीसी और क्लैंग – aaronman