Спецификация no throw для встроенной функции, которая возвращает только переменную-член и не может генерировать исключения, может использоваться некоторыми компиляторами для выполнения пессимизации (выдуманное слово для противоположности оптимизации) это может отрицательно сказаться на производительности. Это описано в литературе по Boost: Спецификация исключения
При некоторых компиляторах может быть полезна спецификация без бросков для не встроенных функций, если выполнены правильные оптимизации и использование этой функции влияет на производительность так, как это оправдывает ее.
Мне кажется, использовать его или нет - это вызов, сделанный очень критическим взглядом в рамках усилий по оптимизации производительности, возможно, с использованием инструментов профилирования.
Цитата из приведенной выше ссылки для спешащих (содержит пример плохих непреднамеренных эффектов указания throw для встроенной функции от наивного компилятора):
Обоснование спецификации исключения
Спецификации исключений [ISO 15.4] иногда кодируются, чтобы указать, какие исключения могут быть выданы, или потому что программист надеется, что они улучшат производительность. Но рассмотрим следующий элемент из умного указателя:
T & operator * () const throw () {return * ptr; }
Эта функция не вызывает никаких других функций; он манипулирует только базовыми типами данных, такими как указатели. Поэтому никогда нельзя вызывать поведение во время выполнения спецификации исключения. Функция полностью доступна для компилятора; действительно, он объявлен встроенным. Следовательно, умный компилятор может легко сделать вывод, что функции не способны генерировать исключения, и выполнить те же оптимизации, которые он сделал бы, основываясь на пустой спецификации исключений. Однако «тупой» компилятор может выполнять все виды пессимизации.
Например, некоторые компиляторы отключают встраивание, если есть спецификация исключения. Некоторые компиляторы добавляют блоки try / catch. Такая пессимизация может привести к снижению производительности, что делает код непригодным для практического применения.
Несмотря на то, что спецификация исключения изначально имеет привлекательный характер, она имеет последствия, которые требуют очень тщательного изучения. Самая большая проблема со спецификациями исключений заключается в том, что программисты используют их так, как если бы они имели эффект, который хотел бы получить программист, а не тот эффект, который они фактически имеют.
Не встроенная функция - это то место, где спецификация исключений «ничего не выбрасывает» может иметь некоторое преимущество с некоторыми компиляторами.