0
想想看,我想打電話給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...);
}
一種不同的方法是:
void my_fun()
{
using boost::algorithm::join;
auto ret = join(something...);
}
但是這會引發ADL查找,我不想做這樣的查找,因爲我知道我在調用什麼方法:boost::algorithm::join
。
只是,我試圖找到較短的boost::join
的方式來調用它。創建「子名稱空間」別名的正確語法或習慣用法是什麼?
聽起來像你可以使用[名稱空間別名](http://en.cppreference.com/w/cpp/language/namespace_alias) – NathanOliver
不要惹別人的名字空間。您可以創建自己的'namespace boost_misc'或任何您想調用它的名稱,但不要將名稱添加到'namespace boost'。 –
我不明白你對ADL有什麼反應?這不是在運行時發生的事情,只是在編譯時。對於您遇到的問題,這是一個非常簡單的解決方案。 –