W szczególności używając g ++ na Linuksie, czy istnieje sposób na określenie, która z funkcji przeciążenia lub szablonu została wybrana dla konkretnej instrukcji?czy kompilator może mi powiedzieć, która funkcja jest przeładowana lub wybrana?
Mówiąc dokładniej, nie zakładam, że koniecznie znam wszystkie możliwe opcje, które mogą znajdować się w plikach nagłówkowych pochodzących z różnych bibliotek. I nawet jeśli tak, nie zakładam, że mogę zmodyfikować odpowiedni kod.
http://stackoverflow.com/questions/1496497/how-can-i-see-parse-tree-intermediate-code-optimization-code-and-assembly-code mogą być przydatne - np. spójrz na kroki pośredniego kompilatora. Gdyby chcesz to zrobić tylko jeden raz, możesz spojrzeć na wygenerowane pliki obiektów i być może przykleić "znacznik" wywołania funkcji otaczającego połączenie, które chcesz zrozumieć. Plik obiektowy wskaże nazwę symbolu wywoływanej funkcji, którą można ponownie przywrócić do podpisu funkcji (który powinien być unikalny), który wywołałeś. – Yakk
Często mówiłem, że potrzebujemy debugowania w czasie kompilacji, aby można było przejść przez instancje szablonów podczas ich oceny, analizowania argumentów szablonu itp., Aby zobaczyć, co się naprawdę dzieje. –
Kiedy mówisz * widzisz *, co dokładnie masz na myśli? Clang jest znany z tworzenia w pełni uformowanego AST dla C++, jednak trzeba napisać program dookoła swoich bibliotek, aby móc "widzieć". –