Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

80
Visualizações
Pasar la tupla por referencia a lambda provoca una advertencia de desreferencia de puntero nulo

Tengo el siguiente fragmento de código:

 boost::circular_buffer<std::tuple<float, float, float>> foo; foo.push_front(std::make_tuple(3.1f, 1.5f, 1.2f)); foo.push_front(std::make_tuple(3.6f, 1.1f, 1.7f)); foo.push_front(std::make_tuple(3.2f, 1.1f, 1.9f)); const float bar = 3.5f; // find the first tuple for which the first element is greater than bar auto firstGreater = std::find_if(foo.begin(), foo.end(), [bar](const auto &t) { return std::get<0>(t) > bar; });

Al compilar este código con GCC versión 7.5.0 o 9.3.0 (no probé con otras versiones) con un indicador -Wnull-dereference, recibo una advertencia en la declaración de devolución de la lambda:

 error: potential null pointer dereference [-Werror=null-dereference] 139 | return std::get<0>(t) > bar; | ~~~~~~~~~~~~~~~^~~~~

Curiosamente, cuando la tupla se pasa a la lambda por valor en lugar de por referencia, la advertencia desaparece:

 auto firstGreater = std::find_if(foo.begin(), foo.end(), [bar](auto t) { return std::get<0>(t) > bar; });

Estoy tratando de entender por qué ese sería el caso, ya que una referencia no puede apuntar a nada, pero no puede descubrir la raíz del problema. ¿Alguna idea de por qué podría pasar esto?

Nota : el fragmento anterior es solo una muestra, pero refleja la esencia de lo que sucede en el código real. Aunque puede que no sea suficiente con reproducir el aviso

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda