今日はあんまり文章を書く時間がないので、ソースから:
namespace Foo{ class baz{}; void f( baz ){ cout << "Foo::f" << endl; } } template< typename T > void f( T const & ){ cout << "global f" << endl; } void test() { Foo::baz x; f( x ); // Foo::f (f)( x ); // global f }
なんというか、Koeing。
f(x) で Foo::f になるのもあんまりわかっていなかったが、
(f)(x) で Foo::f じゃなくなるの、はまあ言われてみればそうかもとは思うが、意外であった。
この辺りの難解さはもうあきらめて、巻き込まれないように注意する方向で考えた方がいいかなぁと思う。
Koeing検索がないとこまるのはわかるんだが、それはそれで変だけどそうじゃないともっと変だからしかたないかという気持ち。インフィールドフライ宣言みたいな。違うか。