gpt4 book ai didi

c++ - clang::ast_type_traits::DynTypedNode::get() 无法推断模板参数 'T'

转载 作者:行者123 更新时间:2023-11-27 23:58:24 29 4
gpt4 key购买 nike

我有这段代码:

ASTContext::DynTypedNodeList NodeList = ASTC->getParents(*DRE);
ast_type_traits::DynTypedNode ParentNode = NodeList[0];
/*some code here to determine if the NodeKind is ImplicitCastExpr*/
const ImplicitCastExpr* ParentICE = ParentNode.get();

基本上,它获取匹配节点的父节点,然后如果它是ImplicitCastExpr(),我想将节点作为一个节点并进一步执行检查。当我尝试为 DynTypedNode::get() 编译代码时,我得到了这个:

mutator-lvl0.cpp:1644:30: error: no matching member function for call to 'get'
ParentICE = ParentNode.get();
~~~~~~~~~~~^~~
/home/bloodstalker/llvm/llvm/llvm/tools/clang/include/clang/AST/ASTTypeTraits.h:233:12:
note: candidate template ignored: couldn't infer template argument 'T'
const T *get() const {

这是标题中的声明:

template <typename T>
const T *get() const {
return BaseConverter<T>::get(NodeKind, Storage.buffer);
}

我做错了什么?

最佳答案

这里是模板参数T:

template <typename T>
const T *get() const { ... }

是一个非推导的上下文。它不能从函数调用的参数中推导出来。您试图在未为 T 提供类型的情况下调用此函数,因此出现错误。

你需要写:

const ImplicitCastExpr* ParentICE = ParentNode.get<ImplicitCastExpr>();
// ^^^^^^^^^^^^^^^^^^

关于c++ - clang::ast_type_traits::DynTypedNode::get() 无法推断模板参数 'T',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40897078/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com