8

X: 试图编写一个内部的 clang tidy 工具来查找一个包含两种类型 ( A, B) 的表达式,然后抛出 if const A&is 隐式转换为B?

鉴于我可以找到两个CXXRecordDecl类,我可以轻松检测是否A可以隐式转换为B

我曾考虑过遍历构造函数,但如果 B 提供强制转换运算符,那将不包括在内。我可以走过他们两个,但我敢肯定还有更多我在这里遗漏的案例(比如外部定义的强制转换运算符)。基本上我想检测是否std::is_convertible<const B&, A>::value会返回 true,这是每个编译器在验证强制转换时必须做的事情,但对于人类来说很难编写......

4

0 回答 0