我想利用 ADL 规则来检查额外命名空间中的函数:
假设我们有一个class X
.
class X
{
...
};
通话中
X x;
f(x);
我希望编译器查看namespace funky
,直到现在与class X
. 但我不想通过funky::f
在调用时放置来混淆编码f
。
实现此目的的一种方法是定义class X
为模板类,其参数来自namespace funky
.
template <typename Fake = funky::someClassFromFunky>
class X
{
...
};
对于一个调用f(x)
,现在,编译器确实会寻找funky::f
.
是否有更清洁/更简单的方法来实现相同的行为?(特别是,someClassFromFunky
在声明中引用一些任意类class X
是很尴尬的。)