我有个不幸的问题。我的GCC 4.6.3编译器拒绝编译我的移动构造函数。将示例中的第6行与" MemoryBlock (const MemoryBlock& other)“交换将使其编译,但不使用下面的move构造函数声明。编译器似乎不知道C+11,尽管它应该使用4.6.3。对吗?
#include <cstddef>
class MemoryBlock
{
public:
MemoryBlock(MemoryBlock && other) //<----------- RAD 6.
{
}
private:
size_t _length; // The length of the resource.
int* _data; // The resource.
};
int main() {
}编译器输出:
prog.cpp:6:28:错误:预期“,”或“.”在“&&”令牌之前 prog.cpp:6:36:错误:无效构造函数;您可能是指“MemoryBlock(constructor&)” 制造:* slask错误1
GCC版本:
g++ (Ubuntu/Linaro 4.6.3 -1 ubuntu5)4.6.3(K R Fr N labbsal I skolan)
makefile:
%.out: %.cpp
g++ -g -W -Wall -std=c++0x $*.cpp -o $*.out;发布于 2015-06-15 18:10:41
尝试-std=c++11而不是-std=c++0x。虽然您的编译器知道使用情况,但-std=c++0x“关闭”了这些新规则。
https://stackoverflow.com/questions/19094678
复制相似问题