Здравствуйте, Erop, Вы писали:
E>Потому, что при типичных настройках оптимизации компилятор с линкером сами решают что подставлять, а что нет, главное что бы определение подставляемого (или иначе используемого, кстати) было в точке вызова доступно.
А последние несколько лет компиляторы умеют даже инлайнить функции, определение которых располагается после точки использования, в той же единице трансляции. Наиболее распространенный сценарий — это обращение к приватным функциям-членам изнутри класса — инлайнинг пройдет *как надо*, независимо от последовательности определений всех функций членов в рамках единицы трансляции. Блягодаря этому, можно не заморачиваться и выбирать последовательность определений, исходя из соображений лучшего восприятия кода.