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