Estoy tratando de compilar un proyecto un poco más grande usando el Candidato de lanzamiento de Visual Studio 2012, C++. El proyecto fue/está compilado utilizando el VS2010 ahora. . (Soy sólo codicioso para obtener los C++ 11 cosas, así que he intentado :)¿Por qué bad_alloc (const char *) se hizo privado en Visual C++ 2012?
Aparte de las cosas que puedo explicar por mí mismo, el proyecto utiliza el código de la siguiente manera:
ostringstream ostr;
ostr << "The " __FUNCTION__ "() failed to malloc(" << i << ").";
throw bad_alloc(ostr.str().c_str());
El el compilador ahora se queja
error C2248: 'std::bad_alloc::bad_alloc' : cannot access private member declared
in class 'std::bad_alloc'
... que es verdad. Esa versión de constructor ahora es privada.
¿Cuál fue el motivo para hacer que esa versión del constructor sea privada? ¿El estándar C++ 11 recomienda no usar ese constructor con el argumento?
(Me puedo imaginar que si la asignación no, puede causar más problemas al tratar de construir algo nuevo. Sin embargo, es sólo mi suposición.)
Gracias, Petr
Muchas gracias por la respuesta elaborada. – pepr