使用 libtooling 测试 class 是否可复制构造
Testing if class is copy constructable using libtooling
我想用libtooling
来测试CXXRecordDecl
定义的是否可复制构造。
我已经试过了:
hasCopyConstructorWithConstParam()
hasTrivialCopyConstructor() || hasNonTrivialCopyConstructor()
不幸的是,如果 class 的复制构造函数被隐式删除,那么这两个表达式 return true
。如果 class 继承自不可复制的 class 或具有不可复制的成员变量,则会发生这种情况。
测试 class 是否可复制构造的逻辑非常重要,并且必须存在于 某处 中 clang
。 如何测试 class 是否可以用 libtooling
复制构造?
将评论转化为答案:
您可以使用 CXXRecordDecl::ctor_begin
检索构造函数
并检查 CXXConstructorDecl::isDeleted()
。
我想用libtooling
来测试CXXRecordDecl
定义的是否可复制构造。
我已经试过了:
hasCopyConstructorWithConstParam()
hasTrivialCopyConstructor() || hasNonTrivialCopyConstructor()
不幸的是,如果 class 的复制构造函数被隐式删除,那么这两个表达式 return true
。如果 class 继承自不可复制的 class 或具有不可复制的成员变量,则会发生这种情况。
测试 class 是否可复制构造的逻辑非常重要,并且必须存在于 某处 中 clang
。 如何测试 class 是否可以用 libtooling
复制构造?
将评论转化为答案:
您可以使用 CXXRecordDecl::ctor_begin
并检查 CXXConstructorDecl::isDeleted()
。