Мне интересно, каков правильный синтаксис для вызова метода шаблона, такого как:
struct print_ch {
print_ch(char const& ch) : m_ch(ch) { }
~print_ch() { }
template<typename T>
void operator()() {
std::cout << static_cast<T>(m_ch) << std::endl;
}
private:
char m_ch;
};
Я придумал что-то вроде этого:
print_ch printer('c');
printer.operator()<int>();
И, похоже, работаетGCC 4.5), но когда я использую его внутри другого шаблонного метода, например:
struct printer {
typedef int print_type;
template<typename T_functor>
static void print(T_functor& fnct) {
fnct.operator()<print_type>();
}
};
Компиляция завершается с error: expected primary-expression before '>' token
.Есть идеи, чтобы сделать это правильно?Заранее спасибо.