如何获取删除函数的clang::SourceRange?非成员函数范围异常咨询
Clang AST中全局删除函数的SourceRange问题
我在处理一段代码生成的Clang AST时遇到了问题,代码如下:
struct has_deleted_function_member { void deleted_function1() = delete; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ col:33 }; void deleted_function2() = delete; //~~~~~~~~~~~~~~~~~~~~~^ col:24 int main() { return 0; }
我需要获取has_deleted_function_member::deleted_function1和deleted_function2这两个FunctionDecl的完整SourceRange——也就是覆盖从开头的void到分号前的整个声明范围。调用deleted_function1的getSourceRange()能得到预期结果,但deleted_function2的getSourceRange()仅覆盖到右括号位置。
对应的AST转储信息如下:
CXXMethodDecl 0x1299b40 <line:3:1, col:33> col:6 deleted_function1 'void ()' delete FunctionDecl 0x1299c38 <line:7:1, col:24> col:6 deleted_function2 'void ()' delete
请问这种排除= delete部分的情况是Bug还是预期行为?如果是预期行为,能否通过编程方式获取它的完整SourceRange?
使用的编译器版本详情:
❯ clang++ --version Ubuntu clang version 14.0.0-1ubuntu1.1 Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin
内容的提问来源于stack exchange,提问作者Jared Hoberock
相关产品推荐
相关产品推荐

