Не используйте выражения с побочным эффектом в невычисляемых контекстах
В невычисляемых контекстах (sizeof, typeid, decltype, declval, noexcept, alignof) выражения анализируются только на уровне типов, но никогда не исполняются - не полагайтесь на их побочные эффекты.
Неправильно:
Выражения внутри sizeof и подобных операторов компилятор не выполняет - он смотрит только на их тип, поэтому n так и останется 42. Лучше вынести инкремент/вызов функции наружу, чтобы код вёл себя предсказуемо.
Правильно: