gpt4 book ai didi

c++ - 叮当查询 : Examining name of template parameter of a function argument's type

转载 作者:行者123 更新时间:2023-12-03 14:41:08 24 4
gpt4 key购买 nike

我有一个大项目,以及一系列 C++ 类成员函数,形式如下:

Return CClass::MemberFunction(
Arg1 arg1,
//...
std::weak_ptr<IMemberFunctionListenerInterface> listener) {
//...
}
我正在尝试编写一个匹配器来查找这些函数,这些函数的参数类型在其名称中包含字符串“Listener”。
我可以找到参数类型在其名称中包含“ weak_ptr ”的函数:
clang-query> m cxxMethodDecl(hasAnyParameter(hasType(cxxRecordDecl(matchesName("weak_ptr")))))
这与上面的函数匹配得很好。但如果我改变 "weak_ptr""Listener" ,函数不再匹配。我猜这是因为它是 std::weak_ptr 的模板参数的名称。类模板。
我已经尝试了这个查询的许多不同变体,但我没有找到与我感兴趣的函数相匹配的变体。
任何指针?

最佳答案

在一行上:

clang-query> m cxxMethodDecl(hasAnyParameter(hasType(allOf(cxxRecordDecl(matchesName("weak_ptr")), classTemplateSpecializationDecl(hasTemplateArgument(0, templateArgument(refersToType(hasDeclaration(cxxRecordDecl(matchesName(".*Listener")))))))))))
铛格式:
cxxMethodDecl(hasAnyParameter(
hasType(allOf(cxxRecordDecl(matchesName("weak_ptr")),
classTemplateSpecializationDecl(hasTemplateArgument(
0, templateArgument(refersToType(hasDeclaration(
cxxRecordDecl(matchesName(".*Listener")))))))))))

关于c++ - 叮当查询 : Examining name of template parameter of a function argument's type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66429191/

24 4 0