【发布时间】:2016-12-17 13:06:18
【问题描述】:
在 c++ 中,如何实现一个带有指示元组长度的 int 模板参数的函数并生成具有该长度的 std::tuple?
例如
func<2>() returns std::tuple<int, int>();
func<5>() returns std::tuple<int, int, int, int, int>().
【问题讨论】:
-
到目前为止你尝试了什么?
-
强制:您是否考虑过只使用
std::array?您可以像元组一样使用array(使用std::tuple_size、std::get等),这会大大简化。 -
@user2079303,我的直觉是我们保留一个类型列表,从 N 倒数到 0 并在计数器递减时将 int 添加到列表中。当 N 为 0 时,返回带有类型列表的元组。但我不知道如何执行。
-
@RyanHaining,我正在调用一个只接受 std::tuple 的函数。
-
@Fake 我不知道您是否是该函数的作者,但通常使用元组作为具体类型(即:不在通用上下文中)是糟糕的设计。如果可以,尝试重新设计函数以接受支持
std::get等的“TupleLike”概念。
标签: c++ c++11 template-meta-programming stdtuple