1

为了避免由于过度内联而导致代码加载...
这是实现类似于内联函数的模板函数的有效方法吗?

原始内联函数声明:

inline double MyInlineFunction(){
        return 3.141592653589;
}

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

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

1 回答 1

2

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

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

于 2017-04-26T18:21:11.390 回答