c++ - 从输入容器/迭代器推导 lambda 参数类型

标签 c++ lambda

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

std::vector<long long> data{0l, 1l, 2l, 3l, 4l};
std::any_of(data.begin(), data.end(), [](long long t){ return t != 0l; })

我读到 auto 不允许以这种方式使用(例如):

std::any_of(data.begin(), data.end(), [](auto 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; });

关于c++ - 从输入容器/迭代器推导 lambda 参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44246149/

相关文章:

c++ - 这是lambda法律模板语法吗?

android - 与Android NDK链接库时如何解决 "incompatible target"?

java - 在 java 的 jni 中使用非静态对象

java - 当变量是由于调用提供 lambda 的方法而被赋值时,如何在 lambda 中使用变量?

c++ - 在c中访问多维数组

c++ - 如何使用 vlfeat 和 opencv 在 C++ 中确定图像的 PHOW 特征?

java - SWT 和 Java 8 lambda(Runnable 和timerExec)

java - 如何将 getter 作为 lambda 函数传递?

lambda - C++0x 闭包的未定义行为 : II

Java8 将对象列表转换为对象的一个​​属性列表