sıkıntılardan:C++ şablonu tip yapı ile işlev şablon argümanı Bu kod unexplicably derleme değil
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>(); }
};
Ben 0'a #if
argüman değiştirirseniz, her nasılsa sabittir. Birisi buna ışık tutabilir mi? Unutmayın ki, anlamsız olan some_wrapper
, aslında gerçek kodumda yararlı bir şeyler yapıyor. aşağıdaki gibi ben -fstd=gnu++11
ile g ++ 4.7.1 kullanıyorum
, hatası (I anothertype<T>::get
beyan hattına işaret geçerli:
error: expected primary-expression before '>' token
error: expected primary-expression before ')' token
Derleyiciniz aracılığıyla gönderdiğiniz kodu tam olarak çalıştırırsanız, bu hatayı alıyor musunuz? –
@ DavidRodríguez-dribeas http://ideone.com/N8dQoj (tam olarak sorudan kod) – leemes