1

ADLルールを利用して、追加の名前空間の関数をチェックしたいと思います。

あるとしましょうclass X

class X
 {
 ...
 };

通話中

X x;
f(x);

コンパイラに調べてもらいたいのですがnamespace funky、これまではとは関係ありませんでしたclass Xfunky::fしかし、私は.を呼び出すたびに置くことによってコード化されたものを乱雑にしたくありませんf

class Xこれを実現する1つの方法は、からの引数を持つテンプレートクラスとして定義すること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 に答える