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