模板函数链接错误,C ++

时间:2015-05-18 10:52:56

标签: c++ templates compilation linker linkage

请考虑以下代码:

header.h

#pragma once

template<class T>
void f(T const& val);

header.cpp

#include "header.h"
template<class T>
void f(T const& val)
{

}

main.cpp

int main()
{
    f(5);
}

编译器输出是一个链接错误,指出:

error LNK2019: unresolved external symbol "void __cdecl f<int>(int const &)" (??$f@H@@YAXABH@Z) referenced in function _main

我知道如果我将模板功能的主体放在header.h中,我的问题就会解决。但为什么?为什么链接器可以找到非模板函数的主体但却找不到模板函数的主体?

0 个答案:

没有答案