特定の名前空間でライブラリを作成する場合、その名前空間のクラスにオーバーロードされた演算子を提供すると便利なことがよくあります。(少なくとも g++ では) オーバーロードされた演算子は、ライブラリの名前空間のいずれかに実装できるようです。
namespace Lib {
class A {
};
A operator+(const A&, const A&);
} // namespace Lib
またはグローバル名前空間
namespace Lib {
class A {
};
} // namespace Lib
Lib::A operator+(const Lib::A&, const Lib::A&);
私のテストでは、どちらも正常に動作しているようです。これら 2 つのオプションに実際的な違いはありますか? どちらのアプローチが良いですか?