草庐IT

move_disc

全部标签

c++ - x = std::move(x) 未定义吗?

让x是之前已初始化的某种类型的变量。是下面这行:x=std::move(x)未定义?这在标准中的什么地方以及它是怎么说的? 最佳答案 不,这不是未定义的行为,它将是实现定义的行为,这取决于移动分配的实现方式。与此相关的是LWGissue2468:Self-move-assignmentoflibrarytypes,请注意这是一个活跃的问题并且没有官方提案,因此这应该被认为是指示性的而不是确定性的,但它确实指出了标准库所涉及的部分并指出它们当前存在冲突。它说:Supposewewritevectorv{"a","b","c","d"}

java - 如何在 Java 中将文件从一个位置 move 到另一个位置?

如何将文件从一个位置move到另一个位置?当我运行我的程序时,在该位置创建的任何文件都会自动move到指定位置。我如何知道move了哪个文件? 最佳答案 myFile.renameTo(newFile("/the/new/place/newName.file"));File#renameTo这样做(它不仅可以重命名,还可以在目录之间move,至少在同一个文件系统上)。Renamesthefiledenotedbythisabstractpathname.Manyaspectsofthebehaviorofthismethodarei

java - 如何在 Java 中将文件从一个位置 move 到另一个位置?

如何将文件从一个位置move到另一个位置?当我运行我的程序时,在该位置创建的任何文件都会自动move到指定位置。我如何知道move了哪个文件? 最佳答案 myFile.renameTo(newFile("/the/new/place/newName.file"));File#renameTo这样做(它不仅可以重命名,还可以在目录之间move,至少在同一个文件系统上)。Renamesthefiledenotedbythisabstractpathname.Manyaspectsofthebehaviorofthismethodarei

c++ - `=default` move 构造函数是否等同于成员 move 构造函数?

这是structExample{stringa,b;Example(Example&&mE):a{move(mE.a)},b{move(mE.b)}{}Example&operator=(Example&&mE){a=move(mE.a);b=move(mE.b);return*this;}}相当于这个structExample{stringa,b;Example(Example&&mE)=default;Example&operator=(Example&&mE)=default;}? 最佳答案 是的,两者都是一样的。但是stru

c++ - `=default` move 构造函数是否等同于成员 move 构造函数?

这是structExample{stringa,b;Example(Example&&mE):a{move(mE.a)},b{move(mE.b)}{}Example&operator=(Example&&mE){a=move(mE.a);b=move(mE.b);return*this;}}相当于这个structExample{stringa,b;Example(Example&&mE)=default;Example&operator=(Example&&mE)=default;}? 最佳答案 是的,两者都是一样的。但是stru

c++ - 为什么没有默认的 move 分配/move 构造函数?

我是一个简单的程序员。我的类成员变量通常由POD类型和STL容器组成。因此,我很少需要编写赋值运算符或复制构造函数,因为它们是默认实现的。此外,如果我在不可move的对象上使用std::move,它会使用赋值运算符,这意味着std::move是完全安全的。由于我是一个简单的程序员,我想利用move功能而不向我编写的每个类添加move构造函数/赋值运算符,因为编译器可以简单地将它们实现为“this->member1_=std::move(other.member1_);..."但它没有(至少在Visual2010中没有),这有什么特别的原因吗?更重要的是;有没有办法解决这个问题?更新:如

c++ - 为什么没有默认的 move 分配/move 构造函数?

我是一个简单的程序员。我的类成员变量通常由POD类型和STL容器组成。因此,我很少需要编写赋值运算符或复制构造函数,因为它们是默认实现的。此外,如果我在不可move的对象上使用std::move,它会使用赋值运算符,这意味着std::move是完全安全的。由于我是一个简单的程序员,我想利用move功能而不向我编写的每个类添加move构造函数/赋值运算符,因为编译器可以简单地将它们实现为“this->member1_=std::move(other.member1_);..."但它没有(至少在Visual2010中没有),这有什么特别的原因吗?更重要的是;有没有办法解决这个问题?更新:如

c++ - 我可以列出初始化只 move 类型的 vector 吗?

如果我通过我的GCC4.7快照传递以下代码,它会尝试将unique_ptrs复制到vector中。#include#includeintmain(){usingmove_only=std::unique_ptr;std::vectorv{move_only(),move_only(),move_only()};}显然这不起作用,因为std::unique_ptr不可复制:error:useofdeletedfunction'std::unique_ptr::unique_ptr(conststd::unique_ptr&)[with_Tp=int;_Dp=std::default_de

c++ - 我可以列出初始化只 move 类型的 vector 吗?

如果我通过我的GCC4.7快照传递以下代码,它会尝试将unique_ptrs复制到vector中。#include#includeintmain(){usingmove_only=std::unique_ptr;std::vectorv{move_only(),move_only(),move_only()};}显然这不起作用,因为std::unique_ptr不可复制:error:useofdeletedfunction'std::unique_ptr::unique_ptr(conststd::unique_ptr&)[with_Tp=int;_Dp=std::default_de

c++ - 为什么我们可以在 `std::move` 对象上使用 `const`?

在C++11中,我们可以编写如下代码:structCat{Cat(){}};constCatcat;std::move(cat);//thisisvalidinC++11当我调用std::move时,表示我要移动对象,即我要改变对象。移动一个const对象是不合理的,那么为什么std::move不限制这种行为呢?以后会是个陷阱吧?这里的陷阱意味着布兰登在评论中提到:"Ithinkhemeansit"traps"himsneakysneakybecauseifhedoesn'trealize,heendsupwithacopywhichisnotwhatheintended."在Scot