C++ 是否有使用name=type的私有文件;

C++ 是否有使用name=type的私有文件;,c++,c++11,private,using,C++,C++11,Private,Using,我想写: namespace A{ using name = type; } 但如果我尝试从另一个空间使用它,它将是可用的。我可以在名称空间内将其设置为私有吗?没有语言特性允许这样做,但许多项目都有一个惯例,即名为detail的名称空间的所有内容都是保留的,不应使用 namespace A { namespace detail { using name = type; } //something using detail::name } //

我想写:

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

不,你不能:名称空间(粗略地说)是公共的,除非整个东西都在匿名名称空间中,在这种情况下,它只对编译单元可见

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

这是否有效:
名称空间A{namespace{using name=type;}name x;}
?如果我理解正确,这将使
name
成为
A
的私有,而在您的代码片段中,完整的命名空间
A
在另一个编译单元中不可见。