什么不符合将 lambda 传递给apply
方法的条件std::valarray
?考虑以下代码:
int main()
{
std::valarray<int> arr = {1, 2, 3, 4, 5, 6};
auto arr1 = arr.apply([](int val) { return val * 2; }); // compiles
int n = 3;
auto arr2 = arr.apply([n](int val) { return val * n; }); //does not compile
return 0;
}
住在科里鲁http://coliru.stacked-crooked.com/a/f0407046699574fc
在https://gcc.godbolt.org/上测试
GCC、MSVC 或 CLang 都不会编译上述代码