Когда включена оптимизация всей программы (a.k.a link-time), влияет ли на встраивание метод реализации?
Без включенной оптимизации всей программы методы, которые публично объявлены в заголовке, но реализованы в соответствующем cpp, очевидно, не могут быть встроены во время компиляции другого модуля преобразования (другого cpp, который включает в себя вышеуказанный заголовок). Поэтому, если вы хотите, чтобы метод был встроенным, он должен быть реализован в экспортирующем заголовке.
С оптимизацией всей программы, имеет ли какое-либо значение, встроенный метод, реализован ли метод в заголовке или нет? То есть возможно / вероятно, что компилятор упустит возможность встроить метод, реализованный в cpp, который он не упустил бы, если бы метод был реализован в заголовке?
Меня особенно интересует ответ для Apple Clang (-flto
флаг) и для Visual Studio (/GL
флаг).
Задача ещё не решена.
Других решений пока нет …