7得票1回答
实现带标签联合体的移动构造函数

我使用一个包含匿名联合和标签的类来实现了一个带标签的联合: class LogFile { public: LogFile(std::ostream& stdStream); LogFile(std::ofstream fileStream); LogFi...

31得票3回答
在C++0x中传递/移动构造函数的参数

如果我有一个带有n个参数的构造函数,其中任何参数都可以是rvalue和lvalue。是否可能通过移动语义来支持rvalues而无需为每个可能的rvalue/lvalue组合编写2^n个构造函数?

8得票3回答
MSVC /permissive- 下 std::string 的重载运算符 '=' 有歧义

使用 /permissive 编译成功,但使用 /permissive- 失败。哪些地方不符合规范,如何解决? 为什么在 (2) 中正常,而在 (4)(3) 中失败? 如果删除 operator long 也会正常。 如何在不更改调用站点 (3,4) 的情况下解决这个问题? #inclu...

31得票5回答
显式移动构造函数?

explicit关键字建议用于可以接受一个参数的所有大多数构造函数,但不包括拷贝构造函数。 对于拷贝构造函数,它有一定的用途(禁止通过函数调用、返回等方式进行隐式复制),但这通常并不是所需的。 那么移动构造函数呢?有什么合理的使用情况使它们变得显式吗?在这里应该遵循什么样的最佳实践?

14得票2回答
为什么在移动构造函数的初始化列表中需要使用std::move?

假设我有一个(微不足道)的类,它可以进行移动构造和移动赋值,但不能进行复制构造或复制赋值: class movable { public: explicit movable(int) {} movable(movable&&) {} movable...

30得票4回答
移动构造函数和静态数组

我一直在探索C++中移动构造函数的可能性,想知道在下面这个示例中利用此功能的一些方法。请考虑以下代码:template<unsigned int N> class Foo { public: Foo() { for (int i = 0; i < N;...

16得票1回答
如何返回一个没有复制构造函数的对象

我的问题涉及如何返回一个没有复制构造函数的对象。例如,假设我有一些位于堆中的bigResource,并且我使用unique_ptr来跟踪它。现在假设我把这个资源的所有权交给了一个毛毛虫。那么我就有了一个名为CaterpillarWithBigResource的对象。现在,在某个时刻,这个Cat...

12得票1回答
为什么C++默认不使用移动构造函数来处理右值引用?

假设我有以下函数void doWork(Widget && param) // param is an LVALUE of RRef type { Widget store = std::move(param); } 为什么我需要使用std::move()将para...

10得票1回答
C++合成移动构造函数如何受到volatile和virtual成员的影响?

请看以下代码:struct node { node(); //node(const node&); //#1 //node(node&&); //#2 virtual //#3 ~node (...

8得票1回答
如何检测一个类是否具有移动构造函数?

我希望检测(并在std::enable_if中使用结果)一个C++类是否定义了移动构造函数。 以下程序输出MOVE,因此使用std::is_move_constructible不是解决方法: #include <stdio.h> #include <type_traits...