2016-11-02 4 views
0

У меня есть некоторые классы A и B:Создание кортежа из вложенных типов

struct A 
{ 
    typedef int value_type; 
}; 
struct B 
{ 
    typedef float value_type; 
}; 

Я хочу сделать кортеж A :: value_type и типа B :: значения через VARIADIC шаблона. Я ожидал что-то вроде этого:

template<typename ...T> 
struct my_tuple 
{ 
    typedef std::tuple<T::value_type...> tuple_type; 
}; 

Это оленья кожа компиляции. Как я могу сделать такой кортеж?

+2

Отсутствует 'typename'? – WhiZTiM

+1

При создании вопросов «мой код не компилируется» всегда лучше вставлять фактические ошибки. – imreal

ответ

1

T - зависимое имя, вам необходимо добавить typename. например:

template<typename ...T> 
struct my_tuple 
{ 
    typedef std::tuple<typename T::value_type...> tuple_type; 
}; 
+0

безупречный! благодаря! – Evgeniy

Смежные вопросы