Podczas tworzenia biblioteki w konkretnej przestrzeni nazw, to często wygodne, aby zapewnić przeciążone operatory dla klas w tej przestrzeni nazw. Wydaje się (przynajmniej z g ++), że przeciążone operatory mogą być realizowane zarówno w przestrzeni nazw biblioteki:Przestrzenie nazw i operator Przeciążanie w C++
namespace Lib {
class A {
};
A operator+(const A&, const A&);
} // namespace Lib
lub nazw globalnego
namespace Lib {
class A {
};
} // namespace Lib
Lib::A operator+(const Lib::A&, const Lib::A&);
od moich testów, oboje wydają się działać dobrze. Czy jest jakaś praktyczna różnica między tymi dwiema opcjami? Czy podejście jest lepsze?
Innym powodem korzystania z nazw Biblioteka: [ten post] (http://stackoverflow.com/questions/5195512/namespaces-and-operator-resolution) zawiera przykład, w którym przy użyciu globalnej przestrzeni nazw nie działa. – Tim