我有以下代码。我试图消除将localization_data_t::language_t
类型显式传递给lambda参数的需要。
auto language_itr = std::find_if(languages.begin(), languages.end(), [&](const localization_data_t::language_t& language)
{
return language.code == language_code;
});
我假设有一种方法可以执行此操作,因为要迭代的对象类型可以由编译器通过迭代器的基础类型派生。但是,我在旅行中没有找到这样的例子。
任何帮助,将不胜感激。
您可以decltype
在C ++ 11中使用:
auto result = std::find_if(v.begin(), v.end(), [](const decltype(*v.begin())& t) { /* */ });
在C ++ 1y中,您可以使用auto
。
auto result = std::find_if(v.begin(), v.end(), [](const auto& t) { /* */ });
还有,std::iterator_traits
但是更冗长。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句