使用全局字符串作为移动语义的默认参数

时间:2015-01-13 10:15:03

标签: c++ c++11 stl

我想重用一个全局字符串,并避免复制ctor。并且通常在某些函数中用作默认参数,我的代码如下所示。

我避免重载构造函数,因为c ++不支持构造函数中调用的构造函数。

我知道我是否使用" const char * aaa"而不是使用" const std :: string aaa", 它也会很好,但复制无法避免..

我使用变量而不是宏,因为它的多行格式难看且代码扩展原因

那么这里应该是一个完美的解决方案呢?

const std::string aaa = R"(a long code string [xxx] )";

class A {
public:
    A(const std::string &&a = aaa) { std::cout<< a; }
};

A a;
A aa("bb");

然后我会得到错误

error: rvalue reference to type 'const basic_string<[3 * ...]>' cannot bind to lvalue of type 'const basic_string<[3 * ...]>'
    A(const std::string &&a = aaa) { std::cout<< a; }

0 个答案:

没有答案