Вдруг компилятор вычислит размер стека по самой большой
структуре и сократит размер выделяемого стека? - Что бедный компилятор может сделать, если функция в одной
единице трансляции, а структура создаётся на стеке в другой? Чтобы
такого не было структура должна быть константой (в идеале constexpr
или вообще просто тип), а код функции доступен в месте вызова (в
идеале статический метод шаблонного класса). Вот тогда будет вам
оптимизация. Но фактически компилятор все инлайны выкинул и вставил вызов функций. - Для инлайна мало написать inline, надо создать условия, чтобы это было, во-первых, возможно, во-вторых, с точки зрения компилятора выгодно для выбранного уровня оптимизации.