我已经了解了内联模板函数规范化here
除了在逻辑上的标头中要求使用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
关键字总是无用的,还是仅当编译器可以内联函数时才有意义?模板总是内联在标题中吗?