Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

521
Vistas
¿Cómo devolver un std::opcional lambda?

¿Cómo puedo declarar una función que devuelve un std::optional lambda? p.ej

 <what_do_i_put_here?> foo(bool b) { if(b) return std::nullopt; return [](int) { ... }; }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

¿Qué hay de usar el operador ternario? Deducirá automáticamente el tipo optional correcto

 #include <optional> auto foo(bool b) { return b ? std::nullopt : std::optional{[](int){}}; }
over 4 years ago · Santiago Trujillo Denunciar

0

Puede agregar un nivel de direccionamiento indirecto para deducir el tipo a través de auto y decltype :

 #include <optional> auto foo_impl(){ return [](int){}; } std::optional<decltype(foo_impl())> foo(bool b) { if(b) return std::nullopt; return foo_impl(); }
over 4 years ago · Santiago Trujillo Denunciar

0

Puedes hacerlo algo como lo siguiente

 #include <iostream> #include <optional> auto f( bool b ) { auto l = [] { std::cout << "Hello World!"; }; std::optional<decltype( l )> opt; if (b) { // some code opt = l; } else { // some other cod } return opt; } int main() { ( *f( true ) )( ); }

Otra forma es usar std::function con std::optional como por ejemplo

 std::optional<std::function<void( int )>> g( bool b ) { if (b) { return std::function<void( int )>( []( int x ) { std::cout << x; } ); } else { return std::function<void( int )>( []( int x ) { std::cout << 2 * x; } ); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda