C++ 从输入容器/迭代器推断lambda参数类型
我想知道是否/如何从给定的向量或迭代器推导出下面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
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;}