Как может std :: runtime_error :: runtime_error (const std :: string &) соответствовать требованию std :: exception для throw ()?

std :: exception требует, чтобы его конструктор был throw () . Однако std :: runtime_error принимает в качестве аргумента std :: string , что указывает на то, что он где-то хранит std :: string . Следовательно, где-то должно происходить присвоение или построение копии. А для std :: string это не операция nothrow .

Как тогда runtime_error :: runtime_error встречается с throw () ?

(Для контекста я реализую тип исключения и хочу сохранить несколько std :: string с сайта вызова, и я хочу сделать это правильно ...)

17
задан Roddy 28 July 2011 в 19:32
поделиться