У меня есть функция, которая объявлена как:
template<typename T>
void MyFunction();
А класс:
template<typename T>
class MyClass
{
public:
typedef void (*Function_T)();
Function_T m_Func;
void DoSomething()
{
m_Func = &MyFunction<T>;
}
}
Когда я использую класс, я не определил ошибку символов на MyFunction<T>
.
Если я изменю DoSomething
на
void DoSomething()
{
m_Func = &MyFunction<T>;
return;
MyFunction<T>();
}
Все работает, но это выглядит как обходной путь и, вероятно, не будет работать с оптимизацией.
Я не могу добавить
template void MyFunction<T>;
классу, потому что он говорит, что не может быть в классе. Есть ли другой способ, которым я могу вызвать создание экземпляра функции?
Edit:
Я смог написать тест, который не прошел, но в g ++ он имеет другое сообщение и фактически ошибку компилятора: http://ideone.com/RbMnh