Modelo especializado em C ++ herda de versão não especializada

Eu estava tentando resolver um problema, mas encontrei uma solução diferente. no entanto, por curiosidade, gostaria de saber se o seguinte é possível:

template< class > struct S;
template< > struct S< Foo > : struct< Foo > {};

Eu gostaria de poder herdar a estrutura não especializada da estrutura especializada. O exemplo acima não funciona porque a estrutura herdada é a especializada, levando à recursão infinita.

Uma solução possível era adicionar o segundo parâmetro de modelo, digamos bool especializado, de modo que o padrão seja falso e o modelo especializado tenha esse parâmetro como true.however, porém, torna as coisas um pouco confusas, pois a instanciação precisa especificar o parâmetro adicional.

Existe alguma outra maneira de implementar o acima?

o problema original era implementar matrizes de matrizes, onde a própria matriz poderia ter operadores adicionais, dependendo se as matrizes constituintes tivessem esses operadores. Espero que isso faça sentido. ao mesmo tempo, diferentes matrizes especializadas precisam ser da mesma classe base e ao mesmo tempo manter o mesmo nome, embora com parâmetros de gabarito diferentes. Eu pensei que poderia haver uma maneira de fazer isso usando enable_if e digite traits

questionAnswers(2)

yourAnswerToTheQuestion