gpt4 book ai didi

c++ - 为什么 `std::pair` 将 `std::tuple` 作为 ctor 参数类型而不是 `const std::tuple&`?

转载 作者:行者123 更新时间:2023-11-30 00:50:33 25 4
gpt4 key购买 nike

C++11标准定义了std::pair的构造函数如下:

template<class... Args1, class... Args2>
pair(std::piecewise_construct_t, std::tuple<Args1...> first_args,
std::tuple<Args2...> second_args);

为什么 std::pairstd::tuple 作为 ctor 参数类型而不是 const std::tuple&

如果复制first_args和second_args比较重怎么办?

最佳答案

目的是让这些元组成为引用元组,由 std::forward_as_tuple 创建。 :

Foo x;
Bar y(1, 2, true);

std::pair<A, B> p(std::piecewise_construct,
std::forward_as_tuple(10, x, make()),
std::forward_as_tuple(std::move(y), false, get(), 'a'));

这构造对元素就好像 A(10, x, make())等等

实际的元组类型是std::tuple<int &&, Foo &, Z &&>等,重量轻。

关于c++ - 为什么 `std::pair` 将 `std::tuple` 作为 ctor 参数类型而不是 `const std::tuple&`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com