我的命名空间中有一个函数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
一个不同的名字,那么有什么办法可以将它从内部的重载集中删除?