Я читал о встраивании спецификаций шаблонных функций здесь
Кроме того, что требуется inline
ключевое слово для создания экземпляра в заголовке, что логично, я не могу найти ответ, является ли этоЕсть ли какая-либо разница в том, чтобы помечать шаблоны не специализированных функций как inline
в заголовке? будь то функции-члены или просто обычные функции.
Пожалуйста, не объясните, почему компилятор знает лучше, чем программист, вопрос в следующем: имеет ли ключевое слово inline
какое-то значение для "распакованных" шаблонов в заголовке?
всегда ли встроенные неспецифические шаблоны, так как они находятся в заголовке? для приведенного ниже примера псевдокод, если мы предположим, что метод Foo::bar
может быть очень длинным или очень коротким, влияет ли пропуск ключевого слова inline
или добавление ключевого слова inline
на фактическую вероятность встраивания или не встраивания расширенной функции компилятором?
Вот пример для шаблонов функций-членов, который отражает мой код:
class Foo
{
public:
template<typename Type>
static Type bar();
};
Пример не встроенного определения:
template<typename Type>
Type Foo::bar()
{
return Type();
}
Пример встроенного определения:
template<typename Type>
inline Type Foo::bar()
{
return Type();
}
Это ключевое слово inline
выше всегда бесполезно, или оно имеет смысл, только если функция может быть встроена компилятором? шаблоны всегда встроены в заголовок?