Я пытаюсь использовать сопоставления AST clang для целевого кода, как показано ниже:
#include<memory>
namespace Demo {
class Widget {};
}
int main () {
auto w = std::make_unique<Demo::Widget>();
}
В запросе clang я пробовал следующее:
callExpr(callee(functionDecl(
// including only this arg gives matches
hasName("make_unique"),
// adding this second arg produces zero matches
hasTemplateArgument(0, refersToType(asString("Demo::Widget")))
)))
IЯ также пытался заменить refersToType(...)
на
refersToDeclaration(cxxRecordDecl(isSameOrDerivedFrom("Demo::Widget")))
, что также дает ноль совпадений. Что я могу использовать для таргетинга вызовов на std::make_unique
, настроенных на определенный тип?