如何将变量区分为编译器构造的字符串?
例如,虽然右值"Hello, World"
的类型是const char*
. const char*
本身并不意味着不能更改指针。char* const
指针无法更改,但这不是编译器构造的。
这是否意味着,对于任何包含 aconst char*
的容器,数据应该通过 C++ 的移动语义以外的方式复制?有什么方法可以移动编译器构造的字符串而不管所有其他字符串吗?
例如,在 GCC 4.5.2 中,返回类型int
而不是返回的方法int&
被视为返回int&&
。我不知道实际的标准是否应该是这样的,但这就是 GCC 暂时所做的。
编辑:为了澄清,我的意思是应该复制指针指向的实际内存。这意味着必须分配新的内存并且指针中的数据应该被复制到新的位置。