Выполняет ли std::runtime_error копирование string или сохраняет ссылку?
Ответ 1
std::exception (который наследует std::runtime_error) должен сделать копию сообщения, даже если это не вызвано в стандартном явном виде (которое я могу найти). Нет причин для класса exception ожидать, что источник сообщения what() переведет его в общем случае.
Ответ 2
Где указатель? Вы копируете строковый литерал и неявно бросаете его на const std::string& при построении ошибки времени выполнения.
Ответ 3
требуется строка refrence. И передает это в блок catch как ссылку, однако, если вы передадите строку, несущую запись в конструктор, она создаст объект строки temp. Кроме того, не делайте + arg с строкой litterial, что синтаксическая ошибка.