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