災禍:C++テンプレートタイプstructを持つ関数テンプレートの引数は、このコードはコンパイルされませんunexplicably
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
のものは実際に私の実際のコードで何か役に立つものです。
私は-fstd=gnu++11
とG ++ 4.7.1を使用しています、私はanothertype<T>::get
を宣言行を指している(以下のようにエラーがされています
error: expected primary-expression before '>' token
error: expected primary-expression before ')' token
コンパイラで投稿したコードを正確に実行すると、そのエラーが発生しますか? –
@DavidRodríguez-dribeas http://ideone.com/N8dQoj(正確には質問のコード) – leemes