我一直试图强制实例化以下内容:
//A.h
namespace A {
template <typename T>
bool foo (B::C<T>, D);
}
template bool A::foo<int> (B::C<int>, D);
//1.cpp
namespace A {
template <typename T>
bool foo (B::C<T>, D) {
return false;
}
}
// 2.cpp
#include "A.h"
using namespace A;
void foo()
{///
...
B::C<int> Alpha;
foo(Alpha, Beta);
}
我收到的错误消息是:
C2785:不同的返回类型
C4667:未定义与强制实例化匹配的函数模板
此实例化是否存在严重错误,因为错误消息似乎不相关。
答案 0 :(得分:-2)
这是因为模板在编译时被扩展,因此编译器必须知道模板化函数的定义和实现,因此您无法在一个文件中定义函数并在另一个文件中实现它