我想知道是否/如何从给定的 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/