模板外部链接不起作用

时间:2018-05-10 10:09:38

标签: c++ templates linkage

标准说模板名称有external linkage

我的问题是:&#34; 当我在两个.cpp文件中声明相同的模板并将这些文件一起编译时,为什么没有链接器错误?&#34; < / p>

全局函数名称具有模板名称等外部链接。这就是为什么我建议他们应该有类似的行为。但是对于函数来说没什么奇怪的,链接器会产生错误,但是对于模板而言,没有错误。

temp_1.cpp

#include <iostream>

// error because of external linkage
// void eq_f(){}


template<class T>
void my_func() {
    std::cout << "1!";
}

temp_2.cpp

#include <iostream>

// external linkage
// void eq_f(){}

template<class T>
void my_func() {
    std::cout << "2!";
}

int main() {
    my_func<int>();
    return 0;
}

命令:

clang++ temp_1.cpp temp_2.cpp -std=c++17

0 个答案:

没有答案