如何别名命名空间并基于别名扩展原始命名空间

n

我在C ++中有当前问题:

我有给定外部库的名称空间。我不喜欢此外部名称空间的名称,因此我执行以下操作:

namespace mynamespace = othernamespace;

如果我想说以下话,这很好用:

mynamespace::foo(...);

但是我发现我需要一个特殊的函数来将找到的othernamespace转换为在外部库中找到的值。我通过以下方式定义了一个函数:

Y xToY(mynamespace::X x);

我意识到我只想在的上下文中使用此函数mynamespace,而我仍然不喜欢使用名称空间名称,othernamespace因此我认为很简单,我将执行以下操作:

namespace mynamespace = othernamespace;

namespace mynamespace{
    Y xToY(mynamespace::X x);
}

但是我收到以下编译器错误,告诉我这无法完成:

myheader.h:13:11: error: namespace alias 'mynamespace' not allowed here, assuming 'othernamespace'

因此它无法编译。注意我当前正在使用c ++ 14。我想知道是否可以使用我的名称空间别名来扩展此名称空间othernamespace

巴里

不。不幸的是,这是不可能的。[namespace.def]中的规则明确排除了别名:

named-namespace-definition中,标识符是名称空间的名称。如果在查找时标识符(3.4.1),则引用出现named-namespace-definition的名称空间中引入的或者在的成员中引入名称空间名称 (而不是namespace-alias。在该名称空间的内联名称空间集合中,namespace -definition扩展了先前声明的名称空间。否则,将标识符作为名称空间名称引入到其中出现命名名称空间定义的声明性区域中

您不能通过别名扩展名称空间,只能通过原始名称空间名称扩展名称空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章