es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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++.

Comments are closed.