Предотвращение чрезмерного использования пространств имен

Моя библиотека использует несколько вложенных пространств имен, представленных следующим образом:

Library name
    Class name 1
    Class name 2
    Class name 3
    [...]
    Utilities
        Class name 1
            [...]
        Class name 2
            [...]
        Class name 3
            [...]
        [...]

Пространство имен «Utilities» содержит полезные расширения для каждого из классов, которые не требуют быть включенным в сам класс.

Пространство имен «Имя библиотеки» необходимо, потому что оно позволяет избежать серьезных конфликтов с другими библиотеками, пространство имен «Утилиты» необходимо, чтобы избежать неоднозначности, которая возникает из таких вещей , и «Класс» name "внутри него избегают конфликтов имен между утилитами, написанными для аналогичных классов.

Несмотря на это, на практике все еще возникают огромные проблемы. Возьмем, к примеру, следующее:

MyLibrary::MyContainer<int> Numbers = MyLibrary::Utilities::MyContainer::Insert(OtherContainer, 123, 456);
// Oh God, my eyes...

Это заставляет меня думать, что я делаю что-то серьезно неправильно. Есть ли более простой способ сделать вещи организованными, интуитивно понятными и недвусмысленными?

7
задан Community 23 May 2017 в 12:29
поделиться