move-semantics 相关问题

移动语义是一种编程语言功能,当源对象是临时对象或其他过期对象时,允许复制操作被更有效的“移动”替换。

push_back vs emplace_back

关于push_back和emplace_back之间的区别,我有点困惑。 void emplace_back(Type && _Val); void push_back(const Type&_Val); void push_back(Type && _Val);作为......

回答 6 投票 618

移动哪个投掷?

据我所知,move-constructors和move-assign必须标记为noexcept,以便编译器在例如在向量内重新分配时使用它们。但是,有没有真正的......

回答 3 投票 6

适用于大阵列的无复制线程安全环形缓冲区

对于大数组(10 ^ 7个元素)上的信号处理,我使用与环形缓冲区连接的不同线程。遗憾的是,只需要太多时间将数据复制到缓冲区和从缓冲区复制数据。目前......

回答 4 投票 4

如何在没有std :: move的情况下移动临时对象[复制]

类的移动构造函数接受可以引用临时对象的rvalue引用。所以,我有临时对象和适当的移动构造函数,可以接受临时的引用...

回答 2 投票 4

转发参数包到构造函数()在g ++ 6.2.1中失败

如何在g ++ - 6.2.1中克服/解决此错误以下代码适用于g ++ - 7.3.0,但升级编译器对我来说不是一个选项。所以我正在寻找一些SFINAE魔法......尝试一下......

回答 1 投票 0

为什么为lvalue参数调用了move-assignment运算符?

我正在对Variant类进行一些调试。有人可以解释为什么编译器会在这种特殊情况下选择移动赋值运算符吗?由于testValue是一个左值,我希望......

回答 1 投票 0

为什么`std :: pair`允许使用用户定义的删除移动构造函数从类类型的右值初始化?

考虑以下类:struct Do_not_move {Do_not_move()= default; Do_not_move(const Do_not_move&)=默认值; Do_not_move(Do_not_move &&)=删除;私人:int ...

回答 1 投票 1

当一个完美的转发构造函数存在时,前导左值引用构造函数的意图是什么?

我们来看std :: pair 举个例子。它有以下两个构造函数:constexpr对(const T1&x,const T2&y); //#1模板<class U1,U2类......

回答 2 投票 7

传递左值时使用std :: move

如果在我的代码中,我已经声明了一个变量(例如字符串)并希望传递给某个函数,所以我的向量将添加该值。我总是需要这样做(使用std :: move),考虑到我做...

回答 2 投票 2

移动分配与标准复制和交换不兼容

测试新的Move Semantics。我刚刚问了一下移动构造函数我遇到的问题。但事实证明,问题实际上是“移动分配”操作员...

回答 3 投票 23

将左值引用移动到成员变量中

假设你有这个简单的类:class GenericClass {public:GenericClass(s td :: unique_ptr) &lref){this-> var = std :: move(lref); } private:std :: unique_ptr&...

回答 1 投票 1

使用boost move和instance参数

我有一个函数处理一个只能移动的实例,它是一个包装其他东西的包装器。该对象提供了访问包装对象的方法以及一些要求它为非...的检查。

回答 1 投票 0

为什么我无法在自定义类的复制构造函数中移动此向量?

class TestClass {public:TestClass(){cout <p.data())<

回答 1 投票 3

为什么我不能在C ++ 14中移动lambda中的std :: unique_ptr?

我想在lambda中传递一个原始指针,但我不希望它被泄露,如果没有调用lambda。它看起来像这样:void Clean(std :: unique_ptr && list); void f(int * list)...

回答 1 投票 18

在这种情况下是否会移动值

请考虑以下代码段:class Bar {...}; class Foo {public:Foo(const Bar&bar):bar_(bar){} private:bar bar_; }; int main(){Foo foo({...}); //传递右值...

回答 1 投票 1

使用std :: forward和非转发的普通旧引用

询问朋友:为什么以下代码中的std :: forward将参数c转换为rvalue?模板 void f(T&c){using value_type = typename std :: ...

回答 3 投票 -1

调用函数时没有调用构造函数

MyType同时定义了副本和移动ctor。执行以下代码段(使用VS2015编译后):模板 void f(T && o){//用o}做点什么......

回答 1 投票 1

为什么移动构造函数和移动标准库的赋值运算符会使对象从未指定的状态移开?

在C ++标准库中有一个移动构造函数和移动赋值运算符的特殊描述,它表示数据从中移出的对象保留在有效但未指定的状态中......

回答 2 投票 7

为什么不调用移动分配?

#包括 using namespace std; struct Item {Item(){cout <<“Item构造函数调用。” << endl;}〜Item(){cout <<“Item析构函数调用。” << endl;} ...

回答 1 投票 2

在共享指针的值中调用std :: swap会调用一堆构造函数和析构函数

我最近开始学习移动语义和共享指针,我在尝试理解它时遇到了很多困难。我目前正在学习这些课程,但是教练......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.