gpt4 book ai didi

c++ - stdlib 是否提供类型列表?

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

在现代 C++ 中,标准库是否提供类型列表模板?

int main() {
using int_types = type_list<int,long,short,char>;
std::cout << length<int_types>::value << ' '
<< typeid(element<2,int_types>::type).name();
}

请注意,int_types 不存储任何值(与 std::tuple 一样)。它只是一个类型列表。

最佳答案

在我看来,在现代 C++ 标准库中,最接近你想要的是 std::tuple

如果问题是 std::tuple 存储所列类型的值(所以,我想,实例化该类型的对象可能是个问题)很容易编写一个可实例化的对象来包装std::tuple using 没有实例化 std::tuple 本身。

我的意思是...给了这样一个包装器

template <typename ... Ts>
struct wrapTuple
{
using type = std::tuple<Ts...>;

template <std::size_t N>
using element = std::tuple_element_t<N, type>;

static constexpr auto length { std::tuple_size_v<type> };
};

您可以在不实例化包装器的情况下编写以下行

   using int_types = wrapTuple<int, long, short, char>;

std::cout << int_types::length << ' '
<< typeid(int_types::element<2u>).name() << std::endl;

但您也可以在不实例化 std::tuple

的情况下实例化它
   int_types it;

std::cout << it.length << ' '
<< typeid(decltype(it)::element<2u>).name() << std::endl;

关于c++ - stdlib 是否提供类型列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618301/

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