Проблема не в том, что operator()
является встроенным , а компоновщик просто удаляет функцию, поскольку нигде в вашей программе не вызывается.
На моей машине если я изменю main
на:
int main()
{
Test t = Test(10);
t(42); // some call, result can be ignored
return 0;
}
, то выполнение команды даст:
(gdb) call (int)t.operator()((int)10)
$1 = 20
Кроме того, при компиляции программы используйте -ggdb3
(для лучшей отладки символов) и -O0
(чтобы вызовы функций не вставлялись, и т. Д. c).