इस कोड unexplicably संकलन नहीं करता है:सी ++ टेम्प्लेटेड प्रकार struct के साथ समारोह टेम्पलेट तर्क संकट
struct sometype
{
template <typename T>
T* get() { return nullptr; }
};
template <typename T>
struct anothertype
{
#if 1
template <typename T2> struct some_wrapper { typedef T2 type; };
typedef typename some_wrapper<sometype>::type thetype;
#else
typedef sometype thetype;
#endif
typedef thetype* Ptr;
Ptr m_ptr;
T* get() { return m_ptr->get<T>(); }
};
तो मैं 0 करने के #if
तर्क बदलने के लिए, यह किसी भी तरह तय हो गई है। क्या कोई इस में कुछ प्रकाश डाल सकता है? कृपया ध्यान दें कि स्पष्ट रूप से व्यर्थ some_wrapper
चीज वास्तव में मेरे असली कोड में कुछ उपयोगी है।
मैं जी ++ 4.7.1 का उपयोग कर रहा -fstd=gnu++11
साथ, त्रुटि के रूप में निम्नानुसार (लाइन मैं कहाँ घोषित anothertype<T>::get
की ओर इशारा करते है:
error: expected primary-expression before '>' token
error: expected primary-expression before ')' token
यदि आप अपने कंपाइलर के माध्यम से पोस्ट किए गए कोड को ठीक से चलाते हैं, तो क्या आपको वह त्रुटि मिलती है? –
@ डेविडरोड्रिगुएज़-ड्राईबीस http://ideone.com/N8dQoj (वास्तव में प्रश्न से कोड) – leemes