X: Попытка написать внутренний инструмент Clang Tidy, который находит выражение, содержащее два типа (A
, B
), а затем выдает, если const A&
неявно преобразуется в B
?
Учитывая, что я могу найти два CXXRecordDecl
для классов, могу ли я легко определить, является ли A
неявно преобразованным в B
?
Я думал о том, чтобы пройтись по конструкторам, но это непокрытие, если B предоставляет операторы приведения.Я мог бы пройтись по обоим, но я уверен, что есть и другие случаи, которые мне здесь не хватает (например, внешние операторы приведения).По сути, я хочу определить, будет ли std::is_convertible<const B&, A>::value
возвращать true, что должен делать каждый компилятор при проверке приведения, но для человека очень сложно написать ...