Function template with an operator

c++, operator-overloading, templates

Solution

You need to specify `T`.

int i = c.operator()<int>();

Unfortunately, you can't use the function call syntax directly in this case.

Edit: Oh, and you're missing `public:` at the beginning of the class definition.

Problem

In C++, can you have a templated operator on a class? Like so: ``` class MyClass { public: template<class T> T operator()() { /* return some T */ }; } ``` This actually seems to compile just fine, but the confusion comes in how one would use it: ``` MyClass c; int i = c<int>(); // This doesn't work int i = (int)c(); // Neither does this* ``` The fact that it compiles at all suggests to me that it's doable, I'm just at a loss for how to use it! Any suggestions, or is this method of use a non-starter?

Original source

Related problems