Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从输入容器/迭代器推断lambda参数类型_C++_Lambda - Fatal编程技术网

C++ 从输入容器/迭代器推断lambda参数类型

C++ 从输入容器/迭代器推断lambda参数类型,c++,lambda,C++,Lambda,我想知道是否/如何从给定的向量或迭代器推导出下面lambda中的参数 std::vector<long long> data{0l, 1l, 2l, 3l, 4l}; std::any_of(data.begin(), data.end(), [](long long t){ return t != 0l; }) 使用decltype有什么解决方案吗 更新 显然,在c++14中,上述行是允许的。对于c++11,解决方案是 std::any_of(data.begin(), data

我想知道是否/如何从给定的向量或迭代器推导出下面lambda中的参数

std::vector<long long> data{0l, 1l, 2l, 3l, 4l};
std::any_of(data.begin(), data.end(), [](long long t){ return t != 0l; })
使用decltype有什么解决方案吗

更新

显然,在c++14中,上述行是允许的。对于c++11,解决方案是

std::any_of(data.begin(), data.end(), [](decltype(data)::value_type t){ return t != 0l; })
谢谢大家。

您可以通过以下方式使用
decltype()

  std::any_of(data.begin(), data.end(),
              [](decltype(data)::value_type t) { return t != 0l; });
您可以通过以下方式使用
decltype()

  std::any_of(data.begin(), data.end(),
              [](decltype(data)::value_type t) { return t != 0l; });

C++11中的lambda中不允许使用
auto
。在C++14和更高版本中是允许的。它是完全有效的,因为C++14在C++11中可以使用
decltype(数据)::C++14中的value_type
是完全有效的
[](decltype(*data.begin())t){return t!=0l;}
在C++11的lambda中不允许使用
auto
。在C++14和更高版本中是允许的。它是完全有效的,因为C++14在C++11中可以使用
decltype(数据)::C++14中的value_type
是完全有效的
[](decltype(*data.begin())t){return t!=0l;}