怎么查看
错误代码导致编译错误,然后编译器输出结果查看。
template<typename T>
void show(const T& a) {
// error code
a.nice();
}
int main() {
show(1);
}
编译输出
已启动生成…
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1>test.cpp
1>D:\codes\vs\test\test\test.cpp(4,7): error C2228: “.nice”的左边必须有类/结构/联合
1>D:\codes\vs\test\test\test.cpp(4,7): message : 类型是“const T”
1> with
1> [
1> T=int
1> ]
1>D:\codes\vs\test\test\test.cpp(7): message : 查看对正在编译的函数 模板 实例化“void show<int>(const T &)”的引用
1> with
1> [
1> T=int
1> ]
1>type_cast.cpp
1>正在生成代码...
1>已完成生成项目“test.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
编译结果分析
T=int
可以分析推导出来的T
是int
.- 得到的函数是
void show<int>(const T&)
案例二
template<typename T>
void show(const T& a) {
// error code
a.nice();
}
int main() {
show("str");
}
编译输出
已启动生成…
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1>test.cpp
1>D:\codes\vs\test\test\test.cpp(4,7): error C2228: “.nice”的左边必须有类/结构/联合
1>D:\codes\vs\test\test\test.cpp(4,7): message : 类型是“const char [4]”
1>D:\codes\vs\test\test\test.cpp(7): message : 查看对正在编译的函数 模板 实例化“void show<char[4]>(const T (&))”的引用
1> with
1> [
1> T=char [4]
1> ]
1>已完成生成项目“test.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
结果分析
T=char[4]
,即长度为4
的字符串数组。- 得到的函数类型是
void show<char[4]>(const T (&))