
Jonathan Wakely wrote:
In fact, I get a similar error for the example code in your mail:
overloaded.cc: In member function `ResultType GENERATE_DETAIL::foo_overloaded_t<ResultType>::operator()() const': overloaded.cc:7: error: no matching function for call to `foo()' overloaded.cc:4: note: candidates are: void foo(int) overloaded.cc:5: note: void foo(char*)
So although I can see uses for this, I can't use it :-)
Oh dear. I hadn't tested it very thoroughly - it works on g++ versions 2.95 and 3.3, but not 3.4 (which I guess you're using). I'm not sure it's possible to deal with this on a compiler which implements two-phase template instantiation, since the nullary function isn't a template function. It might be best just to remove it, since I don't think it's that useful anyway. Unless anyone's got a better idea. Daniel