“Creación de instancias implícita de una plantilla no definida” cuando se reenvía la clase de plantilla.

Tengo un código en el que necesito declarar hacia adelante la clase de plantilla (o al menos, declarar hacia adelante me facilitaría mucho las cosas ...). He escrito una versión simplificada del problema que tengo para poder mostrarla aquí:

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é otro detalle necesito incluir en una declaración hacia adelante de MyTemplateClass? Dado que el error no viene de la siguiente línea hacia abajo, asumo 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.

Respuestas a la pregunta(3)

Su respuesta a la pregunta