Использование typedef из шаблона в качестве типа аргумента шаблона - PullRequest
1 голос
/ 17 декабря 2009

Я пытаюсь сделать что-то вроде этого (полностью синтетический пример, потому что настоящий код немного запутанный):

enum MyInfoType
{
    Value1, Value2
};

template<typename T> struct My_Type_Traits
{};

template<> struct My_Type_Traits<int>
{
    typedef MyInfoType InfoType;
};

template<typename T>
class Wrap
{
     template<My_Type_Traits<T>::InfoType INFO> int GetInfo()
     {...}
};

...
Wrap<int> w;
int info = w.GetInfo<Value1>();

Так что в основном я пытаюсь использовать typedef из другой структуры в качестве типа параметра шаблона. Однако с этим кодом компилятор жалуется, что struct My_Type_Traits<T>::InfoType is not a type. Итак, что мне нужно сделать, чтобы эта работа?

1 Ответ

9 голосов
/ 17 декабря 2009

Вам нужно использовать ключевое слово typename: например, typename My_Type_Traits<T>::InfoType, чтобы компилятор знал, что вы имеете в виду вложенный тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...