ADLルールを利用して、追加の名前空間の関数をチェックしたいと思います。
あるとしましょうclass X
。
class X
{
...
};
通話中
X x;
f(x);
コンパイラに調べてもらいたいのですがnamespace funky
、これまではとは関係ありませんでしたclass X
。funky::f
しかし、私は.を呼び出すたびに置くことによってコード化されたものを乱雑にしたくありませんf
。
class X
これを実現する1つの方法は、からの引数を持つテンプレートクラスとして定義することnamespace funky
です。
template <typename Fake = funky::someClassFromFunky>
class X
{
...
};
呼び出しf(x)
の場合、コンパイラは実際にを検索しfunky::f
ます。
同じ動作を実現するためのよりクリーンで簡単な方法はありますか?someClassFromFunky
(特に、の宣言で任意のクラスを参照するのclass X
は厄介です。)