相关疑难解决方法(0)

在命名空间内使用声明的范围

在C++头文件中是否安全(和正确)以在命名空间中使用using声明,如下所示:

#include <boost/numeric/ublas/vector.hpp>
namespace MyNamespace {
    using boost::numeric::ublas::vector;
    vector MyFunc(vector in);
}
Run Code Online (Sandbox Code Playgroud)

即,正确地包含在MyNamespace块中的"使用boost :: numeric :: ublas :: vector",还是会污染包含此标头的任何文件的命名空间?

c++ scope namespaces using

43
推荐指数
3
解决办法
2万
查看次数

如何在命名空间中引用用户定义的文字运算符?

考虑以下:

#include <iostream>

namespace X
{
    void operator ""_test(unsigned long long x)
    {
        std::cout << x;
    }
}

int main()
{
    using namespace X;
    10_test;
    // 10_X::test; /* doesn't work */
}
Run Code Online (Sandbox Code Playgroud)

我指的是用户定义的字面运营商内部的namespace X一个显式using namespace X;.有没有明确包含命名空间的方式引用文字运算符?我试过了

10_X::test;
Run Code Online (Sandbox Code Playgroud)

但当然不起作用,因为解析器认为X是指操作符的名称.

X::operator ""_test(10)
Run Code Online (Sandbox Code Playgroud)

工作,但它很笨拙.

c++ user-defined-literals c++11

11
推荐指数
1
解决办法
1174
查看次数

标签 统计

c++ ×2

c++11 ×1

namespaces ×1

scope ×1

user-defined-literals ×1

using ×1