【发布时间】:2012-06-29 10:15:37
【问题描述】:
我一直在尝试强制实例化以下内容:
//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:未定义与强制实例化匹配的函数模板
此实例化是否存在明显错误,因为错误消息似乎不相关。
【问题讨论】:
-
首先需要在一个文件中定义模板函数。
-
您的代码不完整 - “不同的返回类型”错误表明“B::C”模板类可能存在问题。
-
我假设代码的错误部分在实际实例化中。但是您可能是对的,错误不在这段代码中,因为我重新创建并成功编译了一个类似的示例。
标签: c++ function templates instantiation