मैं एक टेम्पलेटेड क्लास बना रहा हूं जो किसी भी इटरेटर के चारों ओर एक रैपर है। मैं ऑपरेटर * इस तरह से कर रही हूँ:फ़ंक्शन की वापसी के लिए Decltype
template <typename T>
class MyIterator {
public:
//...
decltype(*T()) operator*() {
//...
}
}
मैं कक्षा टी के ऑपरेटर * करने के लिए decltype एक मंगलाचरण देते हैं, और यह भी काम करता है, लेकिन टी does not के डिफ़ॉल्ट निर्माता यह अभ्यस्त काम किया है।
क्या फ़ंक्शन/विधि के लौटे प्रकार को खोजने के लिए वैसे भी है?
मेरा कंपाइलर कहता है "घोषणा() का उपयोग नहीं किया जाना चाहिए!" –
आपका कंपाइलर क्या कहता है (और आप किस कंपाइलर का उपयोग कर रहे हैं?) आप _ODR-use_ 'declval' नहीं कर सकते क्योंकि यह परिभाषित नहीं है; आप संदर्भों में केवल "इसका उपयोग" कर सकते हैं जहां इसका मूल्यांकन नहीं किया जाएगा, उदाहरण के लिए 'decltype' में। –
/usr/lib/gcc/x86_64- अज्ञात-linux-gnu/4.6.1/../../../../include/c++/4.6.1/type_traits:1134:7: त्रुटि: स्थैतिक दावा असफल: "घोषणा() का उपयोग नहीं किया जाना चाहिए!" –