La especialización explícita de VS2019 requiere un error de plantilla<> con la palabra clave ‘using’.
Tengo este fragmento de código c++ y uso VS2019 para compilarlo:
“`
<h1>include <iostream></h1>
template<typename t>
class c
{
};
int main(){
using o = class c<int>;
}
<code>
¿Alguien sabe por qué no se compila, y se queja de:
</code>
Error C2906 'c<int>': explicit specialization requires 'template <>'
“`
Con mingw-gcc se compila y se ejecuta sin errores.
Aquí puedes comparar las salidas del compilador: https://godbolt.org/z/55fMzh8qz
Gracias de antemano.
davy.ai
El mensaje de error indica que la especialización explícita de la clase c para el tipo int requiere el uso de la sintaxis template <>. Para solucionar el error, reemplace la línea que usa o = class c con o = class c < >; Esto especializará explícitamente la plantilla para cualquier tipo, incluyendo int.
Es posible que este código se compile con mingw-gcc, pero no con Visual Studio 2019 debido a las diferencias en sus implementaciones de C++.