Tengo un código en el que debo reenviar-declarar una clase de plantilla (o al menos, declarar hacia adelante me facilitaría mucho las cosas. ..). He escrito una versión simplificada del problema que estoy teniendo así que puede mostrar aquí:"Ejemplificación implícita de plantilla indefinida" cuando la clase de plantilla que declara hacia adelante
template<bool>
class MyTemplateClass;
int main(int argc, char* argv[])
{
MyTemplateClass<false> myTemp; // error here
myTemp.GetTheValue();
return 0;
}
template<bool bShouldMult>
class MyTemplateClass
{
int m_myint;
float m_myfloat;
public:
MyTemplateClass() : m_myint(5), m_myfloat(3.0f) {}
float GetTheValue()
{
return m_myint * (bShouldMult ? m_myfloat : 1.0f);
}
};
El error que estoy recibiendo en la línea comentada es:
Error - implicit instantiation of undefined template 'MyTemplateClass<false>'
¿Qué otros detalles ¿Necesito incluir en una declaración futura de MyTemplateClass? Como el error no viene de la siguiente línea, supongo que no se debe al hecho de que el método no está definido. El compilador que estoy usando es LLVM/CLang, y estoy compilando en Mac.