【问题标题】:Unpacking a tuple's parts as function paramters将元组部分解包为函数参数
【发布时间】:2021-10-24 05:58:23
【问题描述】:

想象一下,我有一个 tuple<...> 有几种类型。而且我想将元组的值部分扩展为具有静态参数的函数的参数 - 即不一定是可变参数,以便函数参数应该与元组部分匹配。我该怎么做?

【问题讨论】:

标签: c++ c++11 stdtuple


【解决方案1】:

不确定您的问题到底是什么(您下次可以显示一些代码吗?)。 但是您可以使用结构化绑定来“解包”这样的元组:

#include <tuple>
#include <iostream>

void f(int x, double y)
{
    std::cout << x << ", " << y << "\n";
}

template<typename... args_t>
void g(const std::tuple<args_t...>& args)
{
    // C++17
    //const auto [x, y] = args;

    // C++11
    auto x = std::get<0>(args);
    auto y = std::get<1>(args);

    f(x, y);
}

int main()
{
    auto tuple = std::make_tuple( 1,3.14159265 );
    g(tuple);
}

【讨论】:

  • 我在 Godbolt 中尝试过这个示例,它只在 x86-64 gcc 11.1 / 2 clangmsvc 中编译,给出各种编译错误。也许在 Godbolt 中查看它并验证代码是否有助于 OP 在C++11 编译器中使用它?
  • @IlianZapryanov 男孩,我今天很草率 ;) 已修复 godbolt.org/z/e6qMoq85E 我应该使用 make_tuple...一直忘记初始化列表是一个较新的功能。
猜你喜欢
  • 2014-08-03
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多