C 内联函数和模板函数仅在截面库中

C++ Inline functions and template function in header-only library

本文关键字:函数 截面      更新时间:2023-10-16

为了避免由于过度融合而避免代码闭塞...
这是实现行动模板函数的有效方法喜欢内联函数?

原始内联函数声明:

inline double MyInlineFunction(){
        return 3.141592653589;
}

使用模板函数声明替代函数声明:

template<typename T = void> double MyInlineFunctionT(){
    return 3.141592653589;
}

标记功能inline告诉编译器,可以在多个翻译单元中定义相同的函数。这也暗示应该将功能扩展在线扩展,但是大多数编译器在这方面做出了自己的判断。同样,可以在多个翻译单元中实例化模板函数,并且编译器将对是否将其扩展在线扩展。

简短版本:代码大小没有差异。但是模板版本更难理解,更难编译,更难使用,并且更有可能产生错误。