Я просто пытаюсь скомпилировать немного больший проект, используя Visual Studio 2012 Release Candidate, C++. Проект был/скомпилирован с использованием VS2010. (Я просто жаден до C++11, поэтому я попробовал. :)
Помимо того, что я могу объяснить сам, в проекте используется такой код:
ostringstream ostr;
ostr << "The " __FUNCTION__ "() failed to malloc(" << i << ").";
throw bad_alloc(ostr.str().c_str());
Компилятор теперь жалуется
error C2248: 'std::bad_alloc::bad_alloc' : cannot access private member declared
in class 'std::bad_alloc'
... это правда. Эта версия конструктора теперь закрытая.
По какой причине эта версия конструктора была закрытой? Рекомендуется ли стандарт C++11 не использовать этот конструктор с аргументом ?
(Я могу себе представить, что если выделение не удалось, это может вызвать больше проблем при попытке создать что-то новое. Однако это только мое предположение.)
Спасибо, Петр