gpt4 book ai didi

c++ - 如果创建支持返回可变类型列表的通用模板 API,我应该使用 std::tuple 还是其他?

转载 作者:行者123 更新时间:2023-11-27 22:44:59 27 4
gpt4 key购买 nike

因此,我有一个要发布的模板 API。此 API 返回包含类型列表的类类型。

一般来说,我应该使用std::tuple<>吗?指定这个还是我应该使用其他可能更轻量级的东西?

我想我听说过 std::tuple<>相对于使用,可能会导致编译时间稍慢,比如:

template <typename...>
struct list {};

这是真的吗?

最佳答案

I think I've heard that std::tuple<> could result in slightly slower compile times

这是真的。 Louis Dionne (Boost.Hana 的作者) 提到 std::tuple一直比他的 hana::tuple 慢执行。有一个基准涉及std::tuplemetaben.ch ,在“异构/make”下。


如果您只需要一个类型列表,我建议您简单地使用:

template <typename... Ts>
struct type_list { };

就轻量级而言,您没有比这更好的了,它可以简单地“转换”为 std::tuple<Ts...>或任何其他可变参数模板类。此外,与 std::tuple 相比,它的语义更清晰。 , 通常用于运行时计算。

template <typename TypeList, template <typename...> class Target>
struct rename;

template <typename... Ts, template <typename...> class Target>
struct rename<type_list<Ts...>, Target>
{
using type = Target<Ts...>;
};

如果您想要一个极快 类型元编程库,请查看 Kvasir.MPL .

关于c++ - 如果创建支持返回可变类型列表的通用模板 API,我应该使用 std::tuple 还是其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289119/

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