Warum wurde bad_alloc (const char *) in Visual C ++ 2012 als privat deklariert?

Ich versuche nur, ein etwas größeres Projekt mit dem Visual Studio 2012 Release Candidate C ++ zu kompilieren. Das Projekt wurde / wird jetzt mit dem VS2010 übersetzt. (Ich bin nur gierig nach den C ++ 11-Dingen, also habe ich es versucht. :)

Abgesehen von Dingen, die ich selbst erklären kann, verwendet das Projekt den folgenden Code:

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

Der Compiler beschwert sich jetzt

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

... was wahr ist. Diese Version des Konstruktors ist jetzt privat.

Was war der Grund, diese Version des Konstruktors privat zu machen? Wird vom C ++ 11-Standard empfohlen, diesen Konstruktor nicht mit dem Argument zu verwenden?

(Ich kann mir vorstellen, dass es bei einer fehlgeschlagenen Zuordnung zu weiteren Problemen führen kann, wenn Sie versuchen, etwas Neues zu konstruieren. Dies ist jedoch nur meine Vermutung.)

Danke, Petr

Antworten auf die Frage(2)

Ihre Antwort auf die Frage