为什么参数包扩展如此有限
why parameter pack expansion is so limited?
我想知道,为什么参数包扩展在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);
}
参考提到了允许参数包展开的不同上下文中。更简洁的方法是
auto a = {bar(args)...};
如果bar的返回类型是void,这将不起作用
相关文章:
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 扩展可变参数模板中的变量名称
- 扩展C++生成的代码的模板参数类型名称
- 将元组类型扩展为可变参数模板?
- 嵌套参数包扩展失败
- 模板参数部分中有关包扩展的一些混淆
- 可变参数模板参数扩展 类型为 std::function 的类成员
- 如何使用 std::forward 精确地评估参数包的扩展?
- 参数包没有扩展'...'即使...被使用
- 将可变参数类型列表的扩展打包为复杂类型的初始值设定项列表 - 合法吗?
- 如何"unzipping"扩展参数包模式?
- 可变参数函数参数包扩展
- c++非类型参数包扩展
- 可变参数模板类扩展
- 模板 使用数据数组调用函数时扩展参数包
- 将代码移出类定义时未扩展参数包
- 在折叠表达式中扩展参数包作为 lambda 捕获的一部分 - gcc 与 clang
- 当可变参数模板类继承自模板参数时,在调用基类型的方法时扩展参数包
- 可变模板包扩展参数id
- 我有一个成员,该成员是指向参数化函数的指针,我可以扩展参数类型吗?