【发布时间】:2011-07-17 20:07:51
【问题描述】:
如何将变量区分为编译器构造的字符串?
例如,右值 "Hello, World" 的类型为 const char*。 const char* 本身并不意味着不能更改指针。 char* const 指针无法更改,但这不是编译器构造的。
这是否意味着,对于任何拥有const char* 的容器,数据应该通过C++ 的移动语义以外的方式复制?有什么方法可以移动编译器构造的字符串,而不管其他所有字符串吗?
例如,在 GCC 4.5.2 中,返回类型为 int 而不是 int& 的方法被视为返回 int&&。我不知道实际的标准是不是应该是这样的,但GCC暂时就是这样做的。
编辑:为了澄清,我的意思是应该复制指针指向的实际内存。这意味着必须分配新的内存并将指针中的数据复制到新位置。
【问题讨论】:
-
我不太了解“编辑”。你能澄清一下吗?
标签: c++ string c++11 rvalue-reference move-semantics