specialização parcial com o tipo aninhado em uma classe de mode
Estou brincando com modelos e especialização parcial, mas há uma especialização que não sei escrever ... Simplificarei o código para facilitar a leitur
Vamos condizer
template <typename T>
class x
{
...
};
Normalmente, posso me especializar assim:
class x<a_type>
{
...
};
Também trabalha com tipos de modelos:
template <typename T>
class x<std::vector<T>>
{
...
}
gora, eu gostaria de fazer a especialização para um tipo aninhado em uma classe de modelo:
template <typename T>
class y
{
struct nested_type
{
y a_member;
};
...
};
// Here comes the specialization
template <typename T>
class x<y<T>::nested_type>
{
...
};
Isso falha. Também tentei colocar 'typename' antes de y :: nested_type, mas isso não resolveu o problema. O erro do compilador é:
type/value mismatch at argument 1 in template parameter list for ‘template <class T> struct x’
O que eu quero fazer parece lógico, mas não tenho certeza se é possível. Estou usando C ++ 0x com g ++ - 4.5. Alguém conhece a sintaxe correta para escrever essa especialização?