никогда не является 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. Кто-нибудь знает правильный синтаксис для написания такой специализации?