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は厄介です。)