특정 네임 스페이스에서 라이브러리를 제작할 때 해당 네임 스페이스에있는 클래스에 대해 오버로드 된 연산자를 제공하는 것이 편리합니다. 이 오버로드 된 연산자 라이브러리의 네임 스페이스에 하나 구현 될 수있는 (적어도 g와 ++) 보인다 내 테스트에서C++에서 네임 스페이스 및 연산자 오버로드
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&);
을, 그들은 모두 잘 작동하는 것 같다. 이 두 가지 옵션간에 실질적인 차이점이 있습니까? 어느 접근법이 더 좋습니까?
라이브러리 네임 스페이스를 사용하는 또 다른 이유는 [이 포스트] (http://stackoverflow.com/questions/5195512/namespaces-and-operator-resolution)에는 전역 네임 스페이스 사용이 작동하지 않는 예제가 포함되어 있습니다. – Tim