Załóżmy, że mam lambdaJak dodać atrybut do funkcji lambda?
auto func = [](std::string msg) { throw std::runtime_error(msg); };
(co prawda, w tym przykładzie nie ma większego sensu, ale to nie o to chodzi). Gdyby tak nie było lambda, ale zwykła funkcja, chciałbym zadeklarować ją z atrybutem noreturn
jak w
[[noreturn]] void func(std::string msg) { throw std::runtime_error(msg); }
można to również zrobić za pomocą lambda? (Próbowałem kilka odmian z brzękiem 3.5, ale bez powodzenia.)
edit Korzystanie Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
starałem
auto func = [](std::string msg) -> [[noreturn]] void { throw std::runtime_error(msg); };
lub
auto func = [](std::string msg) [[noreturn]] { throw std::runtime_error(msg); };
ale oba zostały odrzucone. Czy to jest niekompletność/błąd clang 3.5?
Zobacz [Jak zadeklarować operator lambda() jako noreturn?] (Http://stackoverflow.com/q/26888805/1708801) –
@ShafikYaghmour Rzeczywiście. Tęskniłem za tym przed pytaniem. Oznaczone moje własne pytanie jako dupe teraz ... – Walter