Если возвращаемое значение является целым числом, и вы возвращаете 0 (как в отредактированном вопросе), то это может оптимизироваться.
Вы должны посмотреть на базовую сборку. Если функция не встроенная, то базовая сборка выполнит mov eax, 0 (или xor eax, eax), чтобы установить для eax (который обычно используется для целочисленных возвращаемых значений) значение 0. Если функция встроенная, это, безусловно, получит оптимизирован прочь.
Но этот senario не слишком полезен, если вы беспокоитесь о том, что происходит, когда вы возвращаете объекты размером более 32 бит. Вам нужно будет обратиться к ответам на неотредактированный вопрос, которые рисуют довольно хорошую картину: если все встроено, то большая часть будет оптимизирована. Если он не встроен, функции должны вызываться, даже если они ничего не делают, и это включает конструктор объекта (поскольку компилятор не знает, изменил ли конструктор глобальные переменные или сделал что-то еще странное) .