C++26 中最简单的元组实现是什么?

问题描述 投票:0回答:1

C++26 在使模板参数包更符合人体工程学方面取得了一些进展。例如,P2662:包索引已被纳入标准。 有了这个和其他相关的提案,最简单的

tuple
实现是什么?

我正在设想以下内容:

template <typename... T>
struct tuple {
    T... m;
};

tuple<int, float> tup{};
float f = tup.m[1];

可以写这样的东西吗?如果不完全符合这个语法,那么怎么办?如果根本没有,那么缺少哪些建议来实现这一目标?

c++ tuples variadic-templates c++-templates c++26
1个回答
0
投票

给你:

#include <iostream>
#include <utility>

template <typename ...P>
auto make_my_tuple(P &&... args)
{
    return [...args = std::forward<P>(args)]<std::size_t I> -> auto &&
    {
        return args...[I];
    };
}

int main()
{
    auto t = make_my_tuple(1, 2.2f, 3.3);
    std::cout << t.operator()<1>() << '\n'; // Like `get<1>()`.
}

显然我是半开玩笑的。但是您可以创建一个模板类来包装此类 lambda 并为它们提供一个不错的接口。

© www.soinside.com 2019 - 2024. All rights reserved.