当人们通常讨论或使用移动语义时,通常在移动两个相同类型的类的上下文中。
例如:
MyObject(MyObject &&obj) { // Implementation }
但是,如果MyObject在很大程度上只包含一个像vector这样的STL容器,那该怎么办呢?是否会采用移动构造函数来获取向量并将其视为滥用功能?
MyObject(vector<backingtype> &&v) : i_Backing(move(v)) {}
我问这个是因为我正在制作一个UTF-8感知的json解析器,它大量使用复制,而移动容器则足够快。
auto arrayParseRes = jsonArrayParse(input); // Array parse res
auto jsonArray = JsonArray(arrayParseRes.Parse_Value()); // Currently copying json values
答案 0 :(得分:5)
不,从传递给你的构造函数的rvalue转移到你的一个类成员中没有任何错误。 std::pair
和std::tuple
的构造函数也是这样做的。