从输入容器/迭代器中推导出lambda参数类型

时间:2017-05-29 15:37:13

标签: 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; })

我读到以这种方式不允许自动(例如):

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; })

谢谢大家。

1 个答案:

答案 0 :(得分:3)

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

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