我想利用 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是很尴尬的。)