C++ C++;仅标头库中的内联函数和模板函数

C++ C++;仅标头库中的内联函数和模板函数,c++,templates,header-only,C++,Templates,Header Only,为了避免由于过度内联而导致代码膨胀… 这是实现模板函数的有效方法吗 像内联函数 原始内联函数声明: inline double MyInlineFunction(){ return 3.141592653589; } 使用模板函数的替代函数声明: template<typename T = void> double MyInlineFunctionT(){ return 3.141592653589; } 模板双MyInlineFunctionT(){ 返

为了避免由于过度内联而导致代码膨胀…
这是实现模板函数的有效方法吗 像内联函数

原始内联函数声明:

inline double MyInlineFunction(){
        return 3.141592653589;
}
使用模板函数的替代函数声明:

template<typename T = void> double MyInlineFunctionT(){
    return 3.141592653589;
}
模板双MyInlineFunctionT(){
返回3.141592653589;
}

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


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

我希望你不是在使用
inline
来“帮助”编译器优化你的代码,而是为了链接器的目的。这对于任何现代编译器来说都是浪费时间。现代编译器将根据具体情况自行决定
inline
(可能使用关键字作为提示)。此外,现代编译器通常可以消除未使用的代码。只是为了链接propouse,以避免在函数实现时分发和编译另一个cpp源文件。我希望这不是pi的值;)pi值已固定,但关闭此工作??)