Следующий фрагмент кода работает для меня:шаблоны член-функций и перегрузкой оператора() в C++
class Foo {
public:
template <class T> T& get() { ... }
};
Foo foo;
foo.get<int>() = ...;
Однако, следующий фрагмент кода не работает для меня:
class Foo {
public:
template <class T> T& operator()() { ... }
};
Foo foo;
foo<int>() = ...;
Ошибки являются:
expected primary-expression before '>' token
expected primary expression before ')' token
Обе ошибки относятся к foo<int>()
Почему это не работает, и можно ли это исправить?
Ваш шаблон 'operator()' довольно непригоден, поскольку его экземпляры будут перегружать только возвращаемое значение. Продолжайте использовать имя 'get' или подобное. – aschepler
Это не непригодно (хотя это может быть не предпочтительнее). См. Ответы ниже. –
Почему вы плакалите функции, но не класс в целом? –