Plantilla especializada en C ++ heredada de una versión no especializada.

Estaba tratando de resolver un problema, pero encontré una solución diferente. Sin embargo, por curiosidad quisiera saber si es posible lo siguiente:

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

Me gustaría poder heredar estructuras no especializadas de una estructura especializada. El ejemplo anterior no funciona porque la estructura heredada es la especializada, lo que lleva a la recursión infinita.

Una posible solución fue agregar el segundo parámetro de la plantilla, por ejemplo, bool especializado, de modo que el valor predeterminado sea falso, y la plantilla especializada tenga ese parámetro como verdadero. Sin embargo, eso hace que las cosas sean un poco desordenadas ya que la creación de instancias necesita especificar un parámetro adicional.

¿Hay alguna otra manera de implementar lo anterior?

El problema original era implementar la matriz de matrices, donde la matriz misma puede tener operadores adicionales, dependiendo de si las matrices constituyentes tienen esos operadores. Espero que eso tenga sentido. al mismo tiempo, diferentes matrices especializadas deben ser de la misma clase base y al mismo tiempo conservar el mismo nombre, aunque con diferentes parámetros de plantilla. Pensé que podría haber una manera de hacerlo usando enable_if y escriba rasgos

Respuestas a la pregunta(2)

Su respuesta a la pregunta