Aliasy przestrzeni nazw

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.

2 przemyślenia nt. „Aliasy przestrzeni nazw”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *