用于在函数内调用命名空间的任何简短形式

时间:2015-03-13 00:45:41

标签: c++ c++11 namespaces

我使用armadillo矩阵库来分配矢量,例如:

mid(mids::input1)=....
mid(mids::input2)=....
mid(mids::input3)=....
mid(mids::input4)=....
mid(mids::input5)=....
mid(mids::input6)=....

此处mid是一个向量,其与operator =混合的仿函数与mid[...]类似,可将值分配给向量的特定索引。

mids是命名空间。因为,我经常使用mid(mids:....)的模式,我想知道是否有任何方法可以避免写长并缩短它,例如:

mid(input6)=...

换句话说,在mid的内部仿函数中,我希望考虑名称空间mids

是否有适合的C ++ 11(或更低版本)解决方案?

我不喜欢使用宏。我不想为整个代码打开using namespace mids;

我只需using namespace mids;仿函数内的mid

1 个答案:

答案 0 :(得分:0)

只需将using namespace mids;放在要使所有名称可见的范围内。它不会在该范围之外显示任何内容。例如:

void fun1 () {
    using namespace mids;
    auto v = input1;  // Ok, finds mids::input1
}

void fun2 () {
    auto v = input1;  // Error, cannot see mids::input1
}

甚至

void fun () {
    mid.input(input1); // Error
    {
        using namespace mids;
        mid.input(input1); // Ok
    }
    mid.input(input1); // Error
}