Nie wszyscy pewnie mają świadomość, że w C++ istnieje możliwość definiowania aliasów dla przestrzeni nazw. Coś jak typedef dla namespace ;)
Mechanizm ten pozwala na przypisanie innej nazwy dla istniejącej już przestrzeni nazw.
Szczególnie użyteczne przy długich nazwach, gdzie pozwala unikać ciągłego wpisywania tych nazw:
namespace my_long_namespace_name { int i; } my_long_namespace_name::i = 5; namespace my = my_long_namespace_name; my::i = 5; |
lub zagnieżdżonych przestrzeniach:
namespace my_long_namespace_name { namespace my_utils { void f() { // ... } } } my_long_namespace_name::my_utils::f(); namespace func = my_long_namespace_name::my_utils; func::f(); |
Powyższy przykład można tez rozwiązać z wykorzystaniem dyrektywy używania:
namespace func { using namespace my_utils; } |
Oczywiste jest, że alias nie może kolidować z istniejącą nazwą w danym zasięgu. W przypadku nie spełnienia tego warunku kompilator poinformuje nas o tym.
Dobra, jedna rzecz o której wiedziałem :D:D:D:D