Clang Const合格的C++方法

sro*_*oss 5 clang

如何测试c ++方法是否在clang中是const限定的?

例如::

class Inner{
public:
    int i;
    Inner();
    float inner_method() const;
};
Run Code Online (Sandbox Code Playgroud)

我正在使用clang-c库,我尝试clang_isConstQualifiedTypeinner_method节点上使用.但是这会返回false.

我不介意答案是否使用clang c ++标头.

Ric*_*ith 2

在 C++ 接口中,检查这一点的方法是 usingCXXMethodDecl::getTypeQualifiers()或 using FunctionProtoType::getTypeQuals()(取决于您是否有声明或类型)。该Qualifiers::Const位指示方法(或方法类型)是否为 const。

在 libclang C API 中,此信息似乎仅用于 的实现getCursorUSR,其结果并不打算被解析,因此使用 C++ API 或提交补丁以将此功能添加到 C API 是最好的选择。