Dlaczego bad_alloc (const char *) stał się prywatny w Visual C ++ 2012?

Próbuję skompilować nieco większy projekt przy użyciu Visual Studio 2012 Release Candidate, C ++. Projekt został / został skompilowany przy użyciu VS2010 teraz. (Jestem po prostu chciwy, aby uzyskać C ++ 11, więc spróbowałem. :)

Poza rzeczami, które mogę sam wytłumaczyć, projekt używa kodu takiego jak ten:

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

Kompilator teraz narzeka

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

... co jest prawdą. Ta wersja konstruktora jest teraz prywatna.

Jaki był powód, dla którego ta wersja konstruktora miała być prywatna? Czy C ++ 11 zaleca, aby nie używać tego konstruktora z argumentem?

(Mogę sobie wyobrazić, że jeśli alokacja się nie powiedzie, może spowodować więcej problemów przy próbie skonstruowania czegoś nowego. Jednak to tylko moje przypuszczenie.)

Dzięki, Petr

questionAnswers(2)

yourAnswerToTheQuestion