Как я могу проверить установленное разрешение перегрузки?
У меня есть 4 конкурирующие функции, используемые в нескольких сайтах. В одном домене вызова я ожидаю, что одна функция будет вызвана, а другой - компилятором. Я не знаю, почему/это не тривиально. Чтобы узнать, что происходит, я использую enable_if/disable_if
для включения/выключения функций, но это очень медленно/утомительно/раздражает.
Поэтому я хотел бы, чтобы компилятор сказал мне "Почему?". То есть для этого сайта с одним вызовом:
- все функции, найденные ADL,
- все функции в разрешении перегрузки,
- все функции, отклоненные от установленного разрешения перегрузки и почему они были отклонены, и
- ряды функций в заданном разрешении перегрузки, а также причина их рангов.
Информация о контроле доступа не требуется.
В принципе, я надеюсь разместить маркировку с сайтом #pragma
или аналогичным (__builtin
...). Но libclang также будет вариантом.
У меня есть доступ к tip-of-trunk clang и gcc, но при необходимости можно установить другие компиляторы/инструменты.