никогда не является typedef для типа, "не связанного" с y <T>).

аю с шаблонами и частичной специализацией, но есть одна специализация, которую я не знаю, как писать ... Я упросту код, чтобы его было легче читать.

Давай кондизатор

template <typename T>
    class x
{
    ...
};

Обычно я могу специализироваться так:

class x<a_type>
{
    ...
};

Также работает с типами шаблонов:

template <typename T>
    class x<std::vector<T>>
{
    ...
}

Теперь я хотел бы сделать специализацию для типа, вложенного в шаблонный класс:

template <typename T>
    class y
{
    struct nested_type
    {
        y a_member;
    };

    ...
};

// Here comes the specialization

template <typename T>
    class x<y<T>::nested_type>
{
    ...
};

Это не удается. Я также попытался поставить 'typename' перед y :: nested_type, но это не решило проблему. Ошибка компилятора:

type/value mismatch at argument 1 in template parameter list for ‘template <class T> struct x’

То, что я хочу сделать, кажется логичным, но я не уверен, возможно ли это. Я использую C ++ 0x с g ++ - 4.5. Кто-нибудь знает правильный синтаксис для написания такой специализации?

Ответы на вопрос(1)

Ваш ответ на вопрос