50得票5回答
如何使转发引用参数仅绑定到右值引用?

我正在编写一个网络库,并且大量使用移动语义来处理文件描述符的所有权。我的其中一个类希望接收其他类型的文件描述符包装器并拥有所有权,所以大致是这样的。 struct OwnershipReceiver { template <typename T> void receive...

49得票4回答
移动构造函数应该使用const还是非const右值引用?

我曾在几个地方看到过有关复制和移动构造函数的推荐签名,如下所示: struct T { T(); T(const T& other); T(T&& other); }; 复制构造函数需要一个const引用,而移动构造函数需要一个非const...

48得票2回答
为什么`std::stringstream::stringstream(std::string&&)`不存在?

我希望 stringstream 有一个从 string&& 中窃取其初始内容的构造函数。STL 中通常不存在这种跨类型的“移动构造函数”吗?如果不是,为什么?

46得票4回答
在函数内部使用时,rvalue引用是否被视为lvalue?

我发布了这个答案:https://dev59.com/OIfca4cB1Zd3GeqPnMXi#28459180,其中包含以下代码: void foo(string&& bar){ string* temp = &bar; cout <<...

45得票4回答
rvalue引用成员的使用?

我在想rvalue引用成员有什么用途。class A { // ... // Is this one useful? Foo &&f; }; 相较于左值引用成员,它有什么优缺点?它的主要使用场景是什么?

44得票4回答
避免在构造函数中使用常量引用和右值引用的指数级增长。

我正在编写一个机器学习库的一些模板类,我经常遇到这个问题。 我主要使用策略模式,其中类作为模板参数接收不同功能的策略,例如:template <class Loss, class Optimizer> class LinearClassifier { ... } 问题出在构造函数上...

43得票4回答
什么是ref-限定符`const &&`的用处?

我在之前的问题后继续研究了一下引用限定符。 给定下面的代码示例:#include <iostream> #include <string> #include <utility> struct A { std::string abc = "abc"; ...

43得票6回答
如何实际实现五个规则?(这是一个关于IT技术的问题)

更新:请看文末 问题1:如果你想让一个管理重型资源的类能够通过值传递,以简化和美化它的使用,你会如何实现五个规则?或者并不需要所有五项规则吗? 实际上,我正在开始一些关于3D成像的工作,其中图像通常是128*128*128 double。但是,能够编写这样的代码将使数学计算更加容易: U...

41得票3回答
按值传递 vs const & 和 && 重载

所以在查找移动语义后,我发现普遍共识是在打算转移所有权时传递值。但是在Scott Meyer的通用引用演讲中,我注意到std::vector::push_back有2个重载: void push_back( const T& value ); void push_back( T&am...

39得票1回答
std::is_convertible和std::convertible_to有哪些实际应用上的区别?

根据en.cppreference.com(据我所知): - std::is_convertible是一个特征类,要求类型From和To是这样的:返回类型为To的函数可以编译并返回一个From值。 - std::convertible_to是一个概念,要求类型From和To符合上述条件,并且...