Это потому, что GDB не поддерживает вызов перегруженного operator()
. Он пытается просто вызвать V
как функцию, и это не функция. Вы можете написать отдельную функцию, в которую вы передаете матрицу и вызываете оператора:
int get_element(matrix const &m,int i,int j) {
return m(i,j);
}
(gdb) p get_element(V,1,1)
(int) $0 = 43.1
и GDB должен быть в состоянии назвать это
Вы также можете попытаться вручную проверить представление V
, чтобы вручную извлечь нужное значение. Это, вероятно, будет сложно с типами, которые используют много шаблонов или метапрограммирование.
Если вы работаете на платформе, которая поддерживается LLDB, она поддерживает перегрузки вызывающего оператора.
struct foo {
int operator()(int i,int j) {
return 10;
}
};
(lldb) p f(1,1)
(int) $0 = 10