Учитывая два CXXRecordDecl для классов A и B, есть ли простой способ увидеть, является ли A неявно конвертируемым в B?

X: Попытка написать внутренний инструмент Clang Tidy, который находит выражение, которое содержит два типа (A, B), а затем бросает, если const A& неявно конвертируется в B?

Учитывая, что я могу найти два CXXRecordDecl для классов, могу ли я легко обнаружить, если A неявно конвертируется в B?

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

6

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …