考虑我想将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
方式来调用它。创建“子名称空间”别名的正确语法或习惯是什么?
答案 0 :(得分:1)
你不能在不污染Boost命名空间的情况下这样做,这不是你的污染。
也许以下妥协对你有用吗?
namespace balgo = boost::algorithm;
然后使用balgo::join
。
所以它不是一个非常具有描述性的名称,但你是在一个狭窄的范围内尝试做一个简短的别名,对吗?
否则,受影响的区域应该足够小,以使简单join
清晰明确(即using namespace boost::algorithm
);否则,只需坚持使用完全限定名称。你的团队会感谢你。