【发布时间】:2016-01-04 07:53:12
【问题描述】:
什么时候 lambda a 可以保证是微不足道的,如果有的话?
我假设如果它只捕获普通类型或什么都不捕获,那将是微不足道的。不过,我没有任何标准语言来支持这一点。
我的动机是将一些代码从 Visual C++ 12 移到 14 并发现一些静态断言在处理我认为微不足道的 lambda 时失败。
例子:
#include <type_traits>
#include <iostream>
using namespace std;
int main()
{
auto lambda = [](){};
cout << boolalpha << is_trivially_copyable<decltype(lambda)>{} << endl;
}
这会在 vs140 上产生 false,但在 vs120 和 clang 中会产生 true。由于周围没有 gcc >= 5,我无法测试 gcc。我希望这是 vs140 的回归,但我不确定这里的行为是否正确。
【问题讨论】:
-
gcc 5.2 也产生
true: Demo
标签: c++ c++11 lambda typetraits