模板对象代码重复

时间:2018-04-26 10:19:44

标签: c++ linker compiler-optimization object-files

首先:不,我询问模板专业化。

假设以下示例:我有一个带有通用方法的头文件:

template <typename T>
T foo(T bar) {
    return bar;
}

在名为file1.cpp的第二个文件中,我将该方法用作foo<int>(42);。现在据我所知,编译器将在生成的file1.o目标文件中为模板方法生成目标代码。

现在如果我有10000个文件都使用带有int模板参数的方法,编译器将生成相同的代码10000次,因为目标代码生成独立于所有其他对象(至少我认为是这样的)。

我的问题是:一旦链接器将所有10000个对象文件合并到我的二进制文件中,他是否会在相同的代码中复制10000次,或者他是否可以检测到这个并且只包含该方法一次(每个模板类型)?

0 个答案:

没有答案