Встроенные функции C++ и шаблонные функции в библиотеке только для заголовков
Чтобы избежать загрузки кода из-за чрезмерного встраивания...
Это правильный способ реализации шаблонной функции, которая действует как встроенная функция?
Исходное объявление встроенной функции:
inline double MyInlineFunction(){
return 3.141592653589;
}
Объявление альтернативной функции с использованием функции шаблона:
template<typename T = void> double MyInlineFunctionT(){
return 3.141592653589;
}
1 ответ
Маркировка функции inline
говорит компилятору, что нормально иметь одну и ту же функцию, определенную в нескольких единицах перевода. Это также намек на то, что функция должна быть расширена inline, но большинство компиляторов выносят собственное мнение на этот счет. Точно так же функция шаблона может быть реализована в более чем одном модуле перевода, и компиляторы сами решат, расширять ли их встроенно.
Короткая версия: нет разницы в размере кода. Но версию шаблона сложнее понять, сложнее скомпилировать, сложнее использовать и с большей вероятностью приводят к ошибкам.