Por que o bad_alloc (const char *) foi tornado privado no Visual C ++ 2012?

Eu estou apenas tentando compilar um projeto um pouco maior usando o Visual Studio 2012 Release Candidate, C ++. O projeto foi / é compilado usando o VS2010 agora. (Eu sou apenas ganancioso para obter as coisas C + + 11, então eu tentei :)

Além das coisas que posso explicar por mim mesmo, o projeto usa o código como este:

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

O compilador agora reclama

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

... que é verdade. Essa versão do construtor é agora privada.

Qual foi o motivo para tornar essa versão do construtor privada? É recomendado pelo padrão C ++ 11 não usar esse construtor com o argumento?

(Eu posso imaginar que, se a alocação falhar, pode causar mais problemas tentar construir algo novo. No entanto, é apenas o meu palpite.)

Obrigado, petr

questionAnswers(2)

yourAnswerToTheQuestion