【发布时间】:2019-08-09 15:42:05
【问题描述】:
我正在尝试编写这样的函数
template<
bool b, RT = std::conditional_t<b,
std::tuple<int, int, int, int>,
std::tuple<int, int, int, int, double, double, double, double>
>
RT function()
{
int i1, i2, i3, i4;
if constexpr(b)
{
double i5, i6, i7, i8;
return { i1, i2, i3, i4, i5, i6, i7, i8 };
}
else
{
return { i1, i2, i3, i4 };
}
}
有没有办法为元组创建一个模板化的typedef,以便我可以简化上面的函数
template<typename T, int N>
using tuple_t = std::tuple<T, T, ... N1 times>
template<typename T1, int N1, typename T2, int N2>
using tuple_t = std::tuple<T1, T1, ... N1 times, T2, T2, ... N2 times>
【问题讨论】:
-
为什么不干脆做
using some_name = std::tuple<int, int, int, int>; using another_name = std::tuple<int, int, int, int, double, double, double, double>;之类的事情? -
@NathanOliver 这只是一个代表性的例子。我有
T1、T2、N1、N2等不同组合的用例。
标签: c++ templates tuples variadic-templates template-meta-programming