Es posible detectar una excepción del tipo lambda?
Aunque es una buena práctica lanzar solo excepciones de tipos derivados destd::exception
class, C ++ hace posible lanzar cualquier cosa. Todos los ejemplos a continuación son válidos en C ++:
throw "foo"; // throws an instance of const char*
throw 5; // throws an instance of int
struct {} anon;
throw anon; // throws an instance of not-named structure
throw []{}; // throws a lambda!
l último ejemplo es interesante, ya que potencialmente permite pasar algún código para ejecutar en el sitio de captura sin tener que definir una clase o función separad
¿Pero es posible atrapar una lambda (o un cierre)? @catch ([]{} e)
No funciona