问题描述: 编译器优化会导致隐式模板实例化被删除,从而引发链接器错误。
解决方法: 有两种解决方法可以解决这个问题:
示例代码:
// 声明模板
template
void foo(T value);
// 显式实例化模板
template void foo(int value);
int main() {
foo(42); // 使用模板
return 0;
}
// 定义模板
template
void foo(T value) {
// 模板函数定义
}
示例代码:
#pragma optimize("", off) // 禁用编译器优化
// 声明模板
template
void foo(T value);
int main() {
foo(42); // 使用模板
return 0;
}
// 定义模板
template
void foo(T value) {
// 模板函数定义
}
#pragma optimize("", on) // 启用编译器优化
这些解决方法可以解决编译器优化导致隐式模板实例化被删除的问题,并避免引发链接器错误。
上一篇:编译器优化和线程