Я хочу написать:Есть ли личное имя name = type;
namespace A{
using name = type;
}
Но если я пытаюсь использовать его из другого пространства, он будет доступен. Могу ли я сделать его частным в своем пространстве имен?
Я хочу написать:Есть ли личное имя name = type;
namespace A{
using name = type;
}
Но если я пытаюсь использовать его из другого пространства, он будет доступен. Могу ли я сделать его частным в своем пространстве имен?
Не существует языковой функции, позволяющей этому, но многие проекты имеют соглашение о том, что все содержимое пространств имен с именем detail
зарезервировано и не должно использоваться.
namespace A {
namespace detail {
using name = type;
}
//something using detail::name
}
//A::detail::name technically accessible, but disallowed by convention
Нет, вы не можете: Пространства имен (грубо говоря) public
, если все это не находится в пределах анонимного пространства имен в этом случае видно только эту единицу компиляции.
namespace{
namespace A{
using name = type;
}
}
Будет ли это работать: 'namespace A {namespace {using name = type;} name x;}'? Если бы я правильно понял, это сделало бы 'имя' частным для' A', в то время как в вашем фрагменте полное пространство имен 'A' не отображается в другом блоке компиляции. – user463035818