C ++内联函数和标题库中的模板函数

时间:2017-04-26 17:38:13

标签: c++ templates header-only

为了避免由于过度内联导致的代码bload ...
这是实现行为的模板函数的有效方法吗? 像内联函数?

原始内联函数声明:

inline double MyInlineFunction(){
        return 3.141592653589;
}

使用模板功能的替代功能声明:

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

1 个答案:

答案 0 :(得分:2)

标记函数inline告诉编译器可以在多个转换单元中定义相同的函数。它还暗示该函数应该内联扩展,但大多数编译器在这方面做出自己的判断。类似地,模板函数可以在多个翻译单元中实例化,编译器将自己判断是否将其扩展为内联。

简短版本:代码大小没有区别。但是模板版本更难理解,更难编译,更难使用,更容易产生错误。