7 votes

Pourquoi la fonction bad_alloc(const char*) est-elle devenue privée dans Visual C++ 2012 ?

J'essaie simplement de compiler un projet un peu plus important en utilisant le Visual Studio 2012 Release Candidate, C++. Le projet a été/est compilé en utilisant VS2010 maintenant. (Je suis juste avide d'obtenir les choses C++11, alors j'ai essayé. :)

En dehors des choses que je peux expliquer par moi-même, le projet utilise le code comme ceci :

ostringstream ostr;
ostr << "The " __FUNCTION__ "() failed to malloc(" << i << ").";
throw bad_alloc(ostr.str().c_str());

Le compilateur se plaint maintenant

error C2248: 'std::bad_alloc::bad_alloc' : cannot access private member declared 
    in class 'std::bad_alloc'

... ce qui est vrai. Cette version du constructeur est maintenant privée.

Quelle était la raison de rendre cette version du constructeur privée ? La norme C++11 recommande-t-elle de ne pas utiliser ce constructeur avec l'argument ?

(Je peux imaginer qu'en cas d'échec de l'allocation, cela pourrait causer plus de problèmes pour essayer de construire quelque chose de nouveau. Cependant, ce n'est que ma supposition).

Merci, Petr

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X