【发布时间】:2020-03-19 23:06:31
【问题描述】:
我有一个带有两个参数的函数:
template <typename T1, typename T2>
void foo(T1 arg1, T2 arg2)
{ std::cout << arg1 << " + " << arg2 << '\n'; }
还有一个应该成对转发其参数的可变参数:
template <typename... Args>
void bar(Args&&... args) {
static_assert(sizeof...(Args) % 2 == 0);
( foo( std::forward<Args>(args), std::forward<Args>(args) ), ... );
// ^ Sends each argument twice, not in pairs
}
我希望bar(1,2,3,4) 致电foo(1,2) 和foo(3,4)
有没有办法做到这一点?
【问题讨论】:
-
同一个args转发两次很危险
标签: c++ c++11 templates variadic-templates