Po kompilacji kodu z tej strony: http://www.cplusplus.com/reference/std/exception/set_unexpected/
wyświetla się komunikat: caught other exception (non-compliant compiler?)\n
Czy da się coś zrobić, żeby Visual Studio 2010 obsługiwał set_unexpected?
The C++ Standard requires that unexpected is called when a function throws an exception that is not on its throw list. The current implementation does not support this.
http://msdn.microsoft.com/en-us/library/7twc8dwy(v=vs.110).aspx
Poza tym zapomnij o tych funkcjonalnościach, to wszystko wyleciało z C++11.
Ale ja to czytałem i nie znalazłem odpowiedzi.
Czyli się nie da?
Visual Studio 2010 obsługuje już C++11?
Nie jest zaimplementowana ta funkcjonalność ani w VS2010, ani w becie VS11. C++11 przez wszystkie kompilatory jest wspierany częściowo.
The current implementation does not support this. To jest odpowiedź. Nie, nie da się. I nie ma potrzeby, żeby to implementowali i żeby tego używać. Specyfikacji wyjątków w C++11 nie powinno się używać (deprecated) a co za tym idzie nie powinno się używać funkcjonalności związanej z handlerem unexpected
. Dodano za to słowo kluczowe noexcept
dla funkcji, które nie wyrzucają wyjątków. (Jeżeli jednak wyrzucą to skończy się to od razu na std::terminate
)