【发布时间】:2017-12-10 03:53:22
【问题描述】:
下面的demo 打印21 而不是12。为什么?
#include <iostream>
template<class... F> void callMany(F... fib){
[&](...){}(
(fib(),123)...
);
}
int main()
{
auto f1=[&](){std::cout<<"1";};
auto f2=[&](){std::cout<<"2";};
callMany(f1,f2);
}
我用 vc++ 和 g++ 测试了它。两者的结果是一样的。
这是一种标准行为吗?如果是,有哪些规则,为什么?
它依赖于编译器吗?
有a way可以反转,不过我觉得有点无关。
【问题讨论】:
标签: c++ lambda language-lawyer variadic-functions