Supponiamo che io sono un lambdaCome aggiungere un attributo ad una funzione lambda?
auto func = [](std::string msg) { throw std::runtime_error(msg); };
(è vero, questo esempio ha poco senso, ma non è questo il punto). Se questo non fosse un lambda, ma una funzione ordinaria, vorrei dichiaro con l'attributo noreturn
come in
[[noreturn]] void func(std::string msg) { throw std::runtime_error(msg); }
Può questo essere fatto anche per un lambda? (Ho provato diverse varianti con clang 3.5, ma senza successo.)
modifica Utilizzando Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
, ho provato
auto func = [](std::string msg) -> [[noreturn]] void { throw std::runtime_error(msg); };
o
auto func = [](std::string msg) [[noreturn]] { throw std::runtime_error(msg); };
ma entrambi sono stati respinti. Questa è una incompletezza/bug di clang 3.5?
Vedere [Come dichiarare un operatore lambda() come noreturn?] (Http://stackoverflow.com/q/26888805/1708801) –
@ShafikYaghmour Effettivamente. L'ho perso prima di chiederlo. Contrassegnato la mia stessa domanda in duplice copia ... – Walter