
17 Sep
2009
17 Sep
'09
8:42 p.m.
On MSVC, the following correct code produces error C2896: 'void operator ||(T,void (__cdecl *)(tag<X>))' : cannot use function template 'void bar(tag<X>)' as a function argument. struct foo { }; template <int X> struct tag { }; template <int X> void bar( tag<X> ) { } template <class T,int X> void operator||(T, void(*)(tag<X>)) { } int main() { foo()||bar<1>; } My goal is to have an operator|| overload that deduces tag<X> implicitly, but without using parenthesis, that is, foo()||bar<1>() wouldn't be satisfactory. Doesn't seem possible, but still I decided to ask. Any ideas? Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode