我想知道为什么参数包扩展在C ++ 11中如此受限 - 它只是在C ++ 11标准中的疏忽吗?为什么不能只做bar(args)...;
?有可能比我更好地解决这个问题吗?
#include <iostream>
int bar(int i)
{
std::cout << i << ' ';
return 0;
}
template <typename T>
void boo(T t)
{
bar(t);
}
template <typename T, typename... Args>
void boo(T t, Args&&... args)
{
bar(t);
boo(args...);
}
template <typename... Args>
void dummy(Args&&... args)
{
}
template <typename... Args>
void foo(Args&&... args)
{
dummy(bar(args)...);
std::cout << std::endl;
int dummy1[sizeof...(Args)] = { (bar(args), 0)... };
std::cout << std::endl;
boo(args...);
}
int main()
{
foo(1, 3, 5);
}
答案 0 :(得分:3)