gpt4 book ai didi

C++:std::tie 与 std::ignore 的返回类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:50 30 4
gpt4 key购买 nike

我想知道 C++11 标准是否对 std::tuple类型 提出了任何要求由 std::tie 返回当一些参数是 std::ignore .

更具体地说,我可以假设:

  1. decltype(std::tie(42, std::ignore))decltype(std::tie(std::ignore, 42)) 不同
  2. decltype(std::tie(42, std::ignore))decltype(std::tie(42)) 不同
  3. decltype(std::tie(std::ignore, 42))decltype(std::tie(42)) 不同
  4. decltype(std::tie(std::ignore, std::ignore))decltype(std::tie(std::ignore)) 不同

换句话说,从类型的角度来看,生成的元组是否表现为类型为 decltype(std::ignore) 的元组?对于匹配 std::ignore 的所有模板参数按位置?

最佳答案

是的,你可以, std::tie 返回 std::tuple<T&...>其中 T...是赋予它的类型。
std::ignore有一个未指定的类型,但它仍会出现在 tuple 中根据您在 std::tie 中指定的位置.

如果让您感觉更好,您可以在代码中的某处包含:

    int n;
auto i = std::tie(std::ignore, n);
auto j = std::tie(n, std::ignore);
auto k = std::tie(n);
static_assert(!std::is_same<decltype(i), decltype(j)>::value, "");
static_assert(!std::is_same<decltype(i), decltype(k)>::value, "");
static_assert(!std::is_same<decltype(j), decltype(k)>::value, "");

等等,对于您明确使用的任何组合。如果您的假设无效,这种方式编译将失败。

关于C++:std::tie 与 std::ignore 的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22994074/

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