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