1

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

4

1 回答 1

3

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

using funky::f;
于 2012-07-27T13:22:41.033 回答