我应该何时inline在C++中为函数/方法编写关键字?
看到一些答案,一些相关的问题:
我应该何时不写在C++函数/方法关键字"内联"?
什么时候编译器不知道何时使函数/方法'内联'?
当一个应用程序为函数/方法写入"内联"时,是否多线程是否重要?
模板和内联函数应在标头中提供,因此相同的代码将进入使用它们的每个翻译单元。
除非编译器选择实际将模板或内联代码放入内联,否则链接器最好删除每个翻译单元中出现的相同代码。这真的会发生吗?标准要求?还是由编译器决定?
可能重复:
为什么模板类的实现和声明应该在同一个头文件中?
例如,在定义模板类时,为什么类方法的实现需要在头文件中?为什么它们不能在实现文件(cpp/cxx)中?
我已经用C++编程了很长一段时间,我很喜欢使用模板.由于我涉足嵌入式编程,我最近一直想知道的是,人们应该期望链接器在模板参数不同的模板实例中对代码重复行为.
对于具有相同参数的相同模板的多个实例,众所周知,在链接时间内将其优化掉(另请参阅:C++链接模板实例如何)
但是在我的情况下,我很感兴趣链接器是否会识别使用不同参数实例化的两个模板之间的任何重复代码.由于它们是不同的类型,我认为它们不会自动崩溃.然而,由于它们可能具有一些不依赖于模板参数的函数,因此在两个类之间是相同的,因此可以假设链接器可以优化这些函数并因此节省空间.
在这种情况下,预期的行为是什么?