我想利用ADL规则检查额外 namespace 中的功能:

假设我们有一个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很尴尬。)

最佳答案

您可以这样将f导入您的命名空间:

using funky::f;

10-08 12:01