Определение вложенного шаблона класса вне шаблона класса
От: о_О
Дата: 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й вариант не возможен? Или я что-то не понимаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.