本地范围中子名称空间的命名空间别名

时间:2017-01-13 17:57:38

标签: c++ namespaces alias

考虑我想将min-width称为boost::algorithm::join,但我不想将全局命名空间中的子名称空间导入为:

boost::join

因为我只想在特定函数的本地范围内使用该语法调用namespace boost { using algorithm::boost; };

boost::join

另一种方法是:

void my_fun()
{
    namespace boost { // Doesn't allowed syntax in local scope
        using algorithm::join;
    }

    auto ret = boost::join(something...);
}

但是这会激发ADL查找,我不想做这样的查找,因为我知道我在调用什么方法:void my_fun() { using boost::algorithm::join; auto ret = join(something...); }

只是,我正试图找到更短的boost::algorithm::join方式来调用它。创建“子名称空间”别名的正确语法或习惯是什么?

1 个答案:

答案 0 :(得分:1)

你不能在不污染Boost命名空间的情况下这样做,这不是你的污染。

也许以下妥协对你有用吗?

namespace balgo = boost::algorithm;

然后使用balgo::join

所以它不是一个非常具有描述性的名称,但你是在一个狭窄的范围内尝试做一个简短的别名,对吗?

否则,受影响的区域应该足够小,以使简单join清晰明确(即using namespace boost::algorithm);否则,只需坚持使用完全限定名称。你的团队会感谢你。