ClassTemplateSpecializationDecl 的定义数据为空
Definition data of ClassTemplateSpecializationDecl is null
例如,我收到一个 class alt::VectorLayout<int, 4>
作为 ClassTemplateSpecializationDecl,我正在尝试处理 class 的字段和方法,但它在定义数据为空的断言上失败.我假设模板特化是一个前向声明,所以它没有被实例化,但我不知道如何实例化,即使提供了所有模板参数。
是否可以接收具有非空定义数据的 ClassTemplateSpecializationDecl 或以某种方式实例化它以填充定义数据?
我可以用 Sema::RequireCompleteType
解决问题。
我发现无法完全从 ClangTool
实例中检索 Sema
。我没有使用 ClangTool
处理源文件,而是创建了一个 CompilerInstance
,其中 Sema
的实例是可检索的,运行 FrontendAction
在 CompilerInstance
.
CompilerInstance 实现:https://github.com/7Hazard/altv-capi/blob/master/src/main.cpp#L111
Sema::RequireCompleteType 用法:https://github.com/7Hazard/altv-capi/blob/master/src/templateClass.cpp#L46
例如,我收到一个 class alt::VectorLayout<int, 4>
作为 ClassTemplateSpecializationDecl,我正在尝试处理 class 的字段和方法,但它在定义数据为空的断言上失败.我假设模板特化是一个前向声明,所以它没有被实例化,但我不知道如何实例化,即使提供了所有模板参数。
是否可以接收具有非空定义数据的 ClassTemplateSpecializationDecl 或以某种方式实例化它以填充定义数据?
我可以用 Sema::RequireCompleteType
解决问题。
我发现无法完全从 ClangTool
实例中检索 Sema
。我没有使用 ClangTool
处理源文件,而是创建了一个 CompilerInstance
,其中 Sema
的实例是可检索的,运行 FrontendAction
在 CompilerInstance
.
CompilerInstance 实现:https://github.com/7Hazard/altv-capi/blob/master/src/main.cpp#L111
Sema::RequireCompleteType 用法:https://github.com/7Hazard/altv-capi/blob/master/src/templateClass.cpp#L46