功能模板实例化失败

时间:2012-06-29 10:15:38

标签: c++ function templates instantiation

我一直试图强制实例化以下内容:

//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:未定义与强制实例化匹配的函数模板

此实例化是否存在严重错误,因为错误消息似乎不相关。

1 个答案:

答案 0 :(得分:-2)

这是因为模板在编​​译时被扩展,因此编译器必须知道模板化函数的定义和实现,因此您无法在一个文件中定义函数并在另一个文件中实现它