Из того, что я могу сказать, сообщество SO делится на то, объявляет ли функция noexcept
значимую оптимизацию компилятора, которая в противном случае была бы невозможна. (Я говорю конкретно об оптимизации компилятора, а не об оптимизации реализации библиотеки на основе move_if_noexcept
.) Для целей этого вопроса предположим, что noexcept
делает возможной оптимизацию генерации кода. С этим допущением имеет смысл объявить inline
функции noexcept
? Предполагая, что такие функции фактически встроены, это, по-видимому, требует, чтобы компиляторы генерировали эквивалент блока try
вокруг кода, полученного в результате функции inline
на сайте вызова, потому что, если в этой области возникает исключение, terminate
должен быть вызван. Без noexcept
этот блок try
кажется ненужным.
Мой первоначальный интерес заключался в том, было ли смысл объявлять функции лямбда noexcept
, учитывая, что они неявно inline
, но потом я понял, что одни и те же проблемы возникают для любой функции inline
, а не только для Lambdas.