2015-11-17 7 views
3

Я хочу написать:Есть ли личное имя name = type;

namespace A{ 
    using name = type; 
} 

Но если я пытаюсь использовать его из другого пространства, он будет доступен. Могу ли я сделать его частным в своем пространстве имен?

ответ

4

Не существует языковой функции, позволяющей этому, но многие проекты имеют соглашение о том, что все содержимое пространств имен с именем detail зарезервировано и не должно использоваться.

namespace A { 
    namespace detail { 
     using name = type; 
    } 

    //something using detail::name 
} 

//A::detail::name technically accessible, but disallowed by convention 
4

Нет, вы не можете: Пространства имен (грубо говоря) public, если все это не находится в пределах анонимного пространства имен в этом случае видно только эту единицу компиляции.

namespace{ 
    namespace A{ 
     using name = type; 
    } 
} 
+2

Будет ли это работать: 'namespace A {namespace {using name = type;} name x;}'? Если бы я правильно понял, это сделало бы 'имя' частным для' A', в то время как в вашем фрагменте полное пространство имен 'A' не отображается в другом блоке компиляции. – user463035818

 Смежные вопросы

  • Нет связанных вопросов^_^