У меня есть код, в котором мне нужно переслать-объявить класс шаблона (или, по крайней мере, forward-declaring сделает вещи намного легче для меня...). Я написал упрощенную версию проблемы, которую у меня есть, поэтому я могу ее отобразить здесь:
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);
}
};
Ошибка, которую я получаю в прокомментированной строке:
Error - implicit instantiation of undefined template 'MyTemplateClass<false>'
Какие еще подробности мне нужно включить в прямое объявление MyTemplateClass? Поскольку ошибка не исходит из следующей строки, я предполагаю, что это связано не с тем, что метод не определен. Компилятор, который я использую, - LLVM/CLang, и я собираюсь на Mac.