构造函数使用可变数量的右值引用

跳转列表

我希望创建一个对象A,该对象可以通过复制或移动可变数量的B对象来构造。像这样:

    class B {}
    
    class A {
        A(B&& operand1, B&& operand2, ... B&& operandk) {
           // move construct A
        }
        
        A(B& operand1, B& operand2, ... B& operandk) {
           // copy construct B
        }
    }

我似乎无法找到一种将r值引用存储在任何可迭代容器中的方法来实现此目的。我已经读过,std::reference_wrapper但似乎不允许使用r值。有没有办法完成这样的事情,或者有理由我根本不应该尝试这样做吗?非常感谢。

光碟

当您需要拥有一个对象时,只需按值即可。调用者可以根据是否需要保留要提供给构造函数的对象的副本来移动-构造或复制-构造参数。

而且-甚至更好-通过这种方式,他们可以移动构造某些对象,而不是其他对象。

在构造函数中,您可以A使用B初始化器列表中对象自由移动构造对象,因为您知道调用者已经复制了需要复制的任何内容。

要接受可变数量的参数,只需让您的构造函数成为接受参数包的模板,然后按值输入参数即可:

class A {
public:
    template <typename... T>
    A(T ...);
};

在实现中,您可以B根据每个参数移动构造a之后执行任何所需的操作如果不能全部使用参数来创建,这将导致构造器模板无法实例化B

template <typename... T>
A::A(T ... args) {
    (... , do_something_with_a_B(B{std::move(args)}));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有可变数量参数的Scala类构造函数

来自分类Dev

如何在JavaScript函数中使用可变数量的参数

来自分类Dev

使用可变数量的参数馈送python函数

来自分类Dev

使用 jQuery .when,如何传入可变数量的函数调用?

来自分类Dev

取决于整数模板的可变数量的构造函数参数

来自分类Dev

我如何创建一个接受可变数量的int的C ++构造函数

来自分类Dev

我如何创建一个接受可变数量的int的C ++构造函数

来自分类Dev

在类构造函数C#中传递可变数量的参数

来自分类Dev

抽象函数的可变数量的参数

来自分类Dev

捕获函数的可变数量的命名参数

来自分类Dev

Pascal函数参数的可变数量

来自分类Dev

函数中可变数量的参数

来自分类Dev

Python 构造 - 解析可变数量的可变长度记录

来自分类Dev

每个项目存储可变数量的值

来自分类Dev

当输入参数数量未知时,使用可变数量的输入参数进行函数调用

来自分类Dev

将可变数量的参数传递给函数,然后使用这些参数在函数中调用函数

来自分类Dev

使用jq提取可变数量的字段

来自分类Dev

使用可变数量的条件来选择列值等于某个值的行

来自分类Dev

std :: thread构造函数如何检测右值引用?

来自分类Dev

C ++:右值引用构造函数和复制删除

来自分类Dev

可变数量的孩子

来自分类Dev

在JavaScript中使用可变数量的参数调用函数(类似于call())

来自分类Dev

Python在同一函数中使用关键字和可变数量的参数

来自分类Dev

如何使用指针编写具有可变数量的参数的函数?

来自分类Dev

当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?

来自分类Dev

如何创建具有可变数量的参数的函数?

来自分类Dev

在输出向量的匿名函数中创建可变数量的术语

来自分类Dev

为代码中的函数调用生成可变数量的参数

来自分类Dev

如何创建带有可变数量的参数的函数变量?

Related 相关文章

  1. 1

    具有可变数量参数的Scala类构造函数

  2. 2

    如何在JavaScript函数中使用可变数量的参数

  3. 3

    使用可变数量的参数馈送python函数

  4. 4

    使用 jQuery .when,如何传入可变数量的函数调用?

  5. 5

    取决于整数模板的可变数量的构造函数参数

  6. 6

    我如何创建一个接受可变数量的int的C ++构造函数

  7. 7

    我如何创建一个接受可变数量的int的C ++构造函数

  8. 8

    在类构造函数C#中传递可变数量的参数

  9. 9

    抽象函数的可变数量的参数

  10. 10

    捕获函数的可变数量的命名参数

  11. 11

    Pascal函数参数的可变数量

  12. 12

    函数中可变数量的参数

  13. 13

    Python 构造 - 解析可变数量的可变长度记录

  14. 14

    每个项目存储可变数量的值

  15. 15

    当输入参数数量未知时,使用可变数量的输入参数进行函数调用

  16. 16

    将可变数量的参数传递给函数,然后使用这些参数在函数中调用函数

  17. 17

    使用jq提取可变数量的字段

  18. 18

    使用可变数量的条件来选择列值等于某个值的行

  19. 19

    std :: thread构造函数如何检测右值引用?

  20. 20

    C ++:右值引用构造函数和复制删除

  21. 21

    可变数量的孩子

  22. 22

    在JavaScript中使用可变数量的参数调用函数(类似于call())

  23. 23

    Python在同一函数中使用关键字和可变数量的参数

  24. 24

    如何使用指针编写具有可变数量的参数的函数?

  25. 25

    当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?

  26. 26

    如何创建具有可变数量的参数的函数?

  27. 27

    在输出向量的匿名函数中创建可变数量的术语

  28. 28

    为代码中的函数调用生成可变数量的参数

  29. 29

    如何创建带有可变数量的参数的函数变量?

热门标签

归档