【发布时间】:2013-02-09 05:06:36
【问题描述】:
在 C++11 中,一个函数可以有两个可变参数模板吗?
如果没有,有没有办法写出这样的东西:
template <class... Types, class... Args>
void f(const std::tuple<Types...>& t, Args&&... args)
【问题讨论】:
-
你的意思是
template<typename... A1, typename... A2> void f(A1&&... a1, A2&&... a2)? -
我想知道我是不是误解了这个问题
-
@Yakk : 我认为你写的那个是不合法的(编译器没有意思在 A1 和 A2 之间的某个地方“剪切”)。
-
@Yakk 这是合法的。调用
f(1, 2)推断A1为空,A2推断为{int, int}。 -
@Vincent 第一个模板参数包包含所有参数。所以结果是
A1是{double, double}而A2是空的。
标签: c++ templates c++11 variadic-templates variadic-functions