gКак определить, какая перегрузка функции вызывается?

Есть некий вызов библиотечной функции, для которой объявлено множество перегрузок и макросов в разных хедерах. IDE при переходе по вызову ведёт к макросу. Можно ли как-то заставить компилятор указать, какая в итоге функция вызывается? Типа опции компилятору, с помощью который покажется отладочная информация, указывающая конкретную функцию после всего препроцессинга, которая в месте вызова будет вызываться или встраиваться. В рантайме проверить затруднительно, т.к. 1) нельзя поставить точку останова на исходники библиотеки; 2) неясно, какой путь приводит к вызову этой функции.

К примеру:

// my_src.cpp
// ...many lines...
// lib::foo(implicitly_convertable_arg_1, ..., implicitly_convertable_arg_N);
// ...many lines...
//
// library.h
// ...many lines...
// #define foo foo_impl
// ...many lines...
// foo_impl(type_11 par_1, ..., type_1N par_N); (1)
// ...
// foo_impl(type_21 par_1, ..., type_NN par_N); (N)

Как узнать, какая из функций [1; N] вызывается? Надо для отладки.


Ответы (0 шт):