从可变参数中只取一个值
我想通过这个简单的例子来提问:如何从可变参数包中获取最后一个值并print(1, 2, 3.14)调用print(3,14)?
void print()
{
cout<<"--empty--";
}
void print(x)
{
std::cout<<"Last Value from variadic pac--" << x;
}
template <typename T, typename... Types>
void print(T var1, Types... var2)
{
int x = // last value from variadic pac : 3.14
print(x) // 3.14
}
int main()
{
print(1, 2, 3.14);
return 0;
}
回答
使用std::tuple,你可能会这样做
template <typename T, typename... Types>
void print(T var1, Types... var2)
{
auto x = std::get<sizeof...(Types) - 1>(std::tie(var2...));
print(x); // 3.14
}
演示