Вы можете сделать это, поместив шаблон в класс следующим образом:
template<int i>
class Foo
{
Foo()
{
std::cout << "called overloaded () with " << i << std::endl;
}
static void Get()
{
std::cout << "called get() with " << i << std::endl;
}
};
int main()
{
Foo<1>::Get();
Foo<3>();
return 0;
}
Однако есть небольшая потеря, так как вы создадите объект Foo при вызове формы direct ().
Кроме того, я полагаю, что в вашем реальном коде есть много других вещей в классе Foo, поэтому, вероятно, будет недопустимо перемещать шаблон в класс (что может быть значительным изменением дизайна) просто для управления этим.
РЕДАКТИРОВАТЬ:
На самом деле, поскольку, вероятно, уже есть пример Foo, который использует OP, мое предложение глупо. Не беспокойтесь.