Определение вложенного шаблона класса вне шаблона класса
От: о_О
Дата: 13.02.12 12:02
Оценка:
В лоб (не работает):
template <typename T>
struct A
{
    struct Tag1;

    template <typename U>
    struct B;

    typedef B<Tag1> Tag1_t;
};

//fail
template <typename T> template <typename U>
struct A<T>::B<U>
{
};

//fail
template <typename T> template <typename U>
struct A<T>::B<typename A<T>::Tag1>
{    
};


Через специализацию (работает):
template <typename T>
struct A
{
    struct Tag1;

    template <typename U>
    struct B;

    typedef B<Tag1&> Tag1_t;
};

//OK
template <typename T> template <typename U>
struct A<T>::B<U&>
{
};


Но 1е и 2е — это разные вещи. 1й вариант не возможен? Или я что-то не понимаю?
Re: Определение вложенного шаблона класса вне шаблона класса
От: wisp Украина  
Дата: 13.02.12 14:26
Оценка: 38 (2)
Здравствуйте, о_О, Вы писали:

о_О>В лоб (не работает):

о_О>
о_О>template <typename T>
о_О>struct A
о_О>{
о_О>    struct Tag1;

о_О>    template <typename U>
о_О>    struct B;

о_О>    typedef B<Tag1> Tag1_t;
о_О>};

о_О>//fail
о_О>template <typename T> template <typename U>
о_О>struct A<T>::B<U>
о_О>{
о_О>};
о_О>


правильно так
template <typename T> template <typename U>
struct A<T>::B
{
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.