2015-07-03 9 views

Odpowiedz

11

Jeśli throw było stwierdzeniem, że nie można go użyć z operatorem warunkowym.

return success() 
    ? computation() 
    : throw std::runtime_error("oops"); 

Uwaga: to może lub nie może mieć zastosowania poza kodu zaciemniania.

Edycja: jeden przydatny przypadek jest wewnątrz ścisłych funkcji C++ 11 constexpr, które mogą zawierać tylko jedną instrukcję. Dzięki @dyp za wgląd!

+0

Kolejne +1 za notatkę, którą byłbym wdzięczny za komentarz. Wygląda na to, że nie mogę dwukrotnie głosować :( – AlwaysLearning

+0

Plus, choć warto zauważyć, że 'throw std :: runtime_error (" oops ")' jest wyrażeniem typu 'void' i działa tylko warunkowo z powodu pewnych technicznych sztuczek to uniemożliwia mi odpowiedź na to pytanie – Bathsheba

+0

@ Backsheba 'return throw std :: runtime_error (" oops "), 0;' działa też (dziękuje, operator przecinka z kosmosu!) – Quentin

Powiązane problemy