Специфікація без кидок для вбудованої функції, яка повертає лише змінну члена і не могла викинути виключення, може використовуватись деякими компіляторами для песимізації (складеного слова для протилежної оптимізації), що може згубно впливати на продуктивність. Це описано в літературі Boost: Специфікація винятків
З деякими компіляторами специфікація без кидок для не вбудованих функцій може бути корисною, якщо будуть зроблені правильні оптимізації та використання цієї функції впливає на продуктивність таким чином, щоб це виправдовувало її.
Для мене це звучить як використовувати його чи ні - це дзвінок, зроблений дуже критичним оком, як частина зусиль з оптимізації продуктивності, можливо, використовуючи інструменти профілювання.
Цитата з наведеного вище посилання для тих, хто поспішає (містить приклад поганих ненавмисних ефектів вказівки накидання на вбудовану функцію від наївного компілятора):
Обґрунтування специфікацій винятків
Специфікації винятків [ISO 15.4] іноді кодуються, щоб вказати на те, які винятки можуть бути кинуті, або тому, що програміст сподівається, що вони покращать продуктивність. Але розглянемо наступного члена із розумного вказівника:
T & operator * () const кінуць () {return * ptr; }
Ця функція не вимагає інших функцій; він маніпулює лише основними типами даних, такими як покажчики. Тому жодна поведінка у специфікації винятків не може бути застосована. Функція повністю піддається компілятору; насправді це оголошено вбудованим. Тому розумний компілятор може легко зробити висновок про те, що функції не в змозі викидати винятки, і зробити ті самі оптимізації, які він робив на основі пустої специфікації виключення. Однак "німий" компілятор може робити песимізацію всілякі.
Наприклад, деякі компілятори відключають вбудовану лінію, якщо є специфікація винятків. Деякі компілятори додають блоки "try / catch". Такі песимізації можуть стати катастрофою, що робить код непридатним у практичних програмах.
Незважаючи на те, що спочатку є привабливим, специфікація винятків, як правило, має наслідки, які потребують дуже уважної думки. Найбільшою проблемою із специфікаціями винятків є те, що програмісти використовують їх так, ніби вони мають той ефект, який хотів би програміст, замість ефекту, який вони насправді мають.
Функція, що не вбудовується, - це місце, де специфікація винятків "не кидає нічого" може мати певну користь у деяких компіляторів.