Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

369
Views
¿Cuál es la razón por la que el compilador no puede deducir el tipo en std::for_each con una función de miembro lambda en std::unordered_map?

Durante el trabajo me encontré con un problema con un bucle for_each.

Tengo un std::unordered_map dentro de una estructura que contiene otro objeto. Cuando uso std::for_each no puedo usar auto& para llamar al elemento actual, el compilador no puede deducir el tipo. Por otro lado, si evito auto& y uso std::unordered_map<std::size_t, Foo>::value_type& todo funciona como se esperaba.

Estoy bien con eso, pero no entiendo por qué el compilador no puede deducir el tipo aquí... puede encontrar este ejemplo a continuación aquí en el explorador del compilador: https://godbolt.org/z/3eehKsxs7

 #include <iostream> #include <unordered_map> #include <algorithm> struct Foo { template<typename T> T do_some_work() { // do some work .. T t; return t; } }; struct map_manager { std::unordered_map<std::size_t, Foo> m_map; }; int main() { Foo f1; map_manager mm; mm.m_map[1] = f1; mm.m_map[2] = f1; mm.m_map[3] = f1; std::for_each(std::begin(mm.m_map), std::end(mm.m_map), //[](std::unordered_map<std::size_t, Foo>::value_type& current){ // works [](auto& current){ // doesn't work auto bar = current.second.do_some_work<int>(); }); }
over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!