在我的理解中,隐式转换是在语义分析中完成的,但是clang AST命令clang -Xclang -ast-dump -fsyntax-only file.cpp
会在AST中生成类型转换信息,就像这两个代码一样:
...
`-ImplicitCastExpr 0x7fdc27050558'int'
......
ImplicitCastExpr 0x7f878884c2d0'unsigned int'
...
提出问题。
答案 0 :(得分:3)
隐式类型转换通常发生在编译器的语义分析(更具体地说是类型检查)中,但是在解析过程中可能会发生一些隐式类型转换,以生成更简单的AST(直接将文字转换为它们的值,依此类推)。
如果您专门查看所使用的命令选项,我们会发现这意味着
-仅fsyntax 运行预处理器,解析器和类型检查阶段。
https://clang.llvm.org/docs/CommandGuide/clang.html
所以我们看到我们期望输出类型信息(需要隐式转换)。
注意:我可能还不清楚,但是类型检查只是语义分析的一个阶段。