名前空間 に関数があります。この関数の仕事は、引数依存ルックアップを使用しns::foo
て の呼び出しをディスパッチすることです。foo
namespace ns
{
template<typename T>
void foo(T x)
{
// call foo through ADL
foo(x);
}
}
foo
クライアントが手動でインスタンス化せずに呼び出せるようにしたい、つまり:
bar x;
ns::foo(x);
いいえ
ns::foo<bar>(x);
もちろん問題は、よりもns::foo
適切な一致がない場合、 が再帰的であることです。foo
ns::foo
別の名前を付けたくないns::foo
ので、内部に設定されたオーバーロードから削除する方法はありますか?