MSVC, g++, std::exception

erotic

Почему в MSVC в классе std::exception есть конструктор, который принимает const char *, есть член класса, который хранит этот const char *, и функция what его возвращает.
А в линуксе под g++ в этом же классе есть только конструктор без параметров, нет никаких членов класса, а функция what еще и может генерить исключения?

bobby

virtual const char* what const throw;

Не может она генерить исключения.

erotic

А, ну да, ты прав
Тут я поспешил делать выводы.
Ну а в остальном?

bobby

А в остальном - это ведь не единственное место, в котором стандартная библиотека C++ отличается в MSVC и в g++. =)

erotic

Эмм... а стандарт какой-то на нее есть? Типа, которая из них "правильнее"?

bobby

В стандарте std::exception имеет только конструктор без параметров (и конструктор копирования).
Предполагается, что программист должен использовать класс std::exception в качестве базового класса для своих исключений.

Werdna

Используй дочений класс std::logic_error

erotic

я так и сделал
пасиб

Olyalyau

ISO/IEC 14882:1998 стр. 343. ГНУтый вариант правильный.
Оставить комментарий
Имя или ник:
Комментарий: