Предположим, у меня есть очень простая функция, и я ожидаю, что компилятор ее встроит. Но мне может потребоваться выдать исключение при просмотре недопустимого ввода, не остановит ли компилятор функцию?
Компилятор может отказать в работе по любой причине.В gcc перечислены причины, по которым может не включать функцию , но исключение не входит в их число.Кроме того, опция -Winline заставит компилятор выдавать предупреждение, если он не может встроить функцию, которую вы пометили как встроенную.Вы можете попробовать это и посмотреть, делаете ли вы что-нибудь для предотвращения встраивания.
Это вполне разумно и допустимо для компилятора встроить функцию, которая выдает.
Я только что столкнулся с этой ситуацией с MSVC версии 19. Функция, которая выдает исключение, не будет встроена при компиляции для x86. Если я заменю throw на exit(1) или если я скомпилирую для x86-64, он будет просто встроен.
throw
exit(1)