Sto solo cercando di compilare un progetto un po 'più grande usando la versione candidata di Visual Studio 2012, C++. Il progetto è stato/è compilato utilizzando VS2010 ora. . (Io sono solo avidi di ottenere i C++ 11 cose, così ho provato :)Perché il bad_alloc (const char *) è stato reso privato in Visual C++ 2012?
parte delle cose che posso spiegare da solo, il progetto utilizza il codice come questo:
ostringstream ostr;
ostr << "The " __FUNCTION__ "() failed to malloc(" << i << ").";
throw bad_alloc(ostr.str().c_str());
Il il compilatore si lamenta ora
error C2248: 'std::bad_alloc::bad_alloc' : cannot access private member declared
in class 'std::bad_alloc'
... che è vero. Quella versione di constructor è ora privata.
Qual è stato il motivo per rendere privata questa versione del costruttore? È raccomandato dallo standard C++ 11 di non usare quel costruttore con l'argomento?
(Posso immaginare che, se l'assegnazione non è riuscita, potrebbe causare più problemi per cercare di costruire qualcosa di nuovo. Tuttavia, è solo la mia ipotesi.)
Grazie, Petr
Grazie mille per la risposta elaborata. – pepr