Я предполагаю, что линия, о которой вы говорите, -
std::cout << max(&d1, &d2) << std::endl;
Проблема в том, что вы передаете Dummy *
вместо Dummy
.Это заставляет max
вернуть Dummy *
, и, поскольку ваш перегруженный operator<<
принимает (по существу) Dummy
, он не вызывается.Если вы пытаетесь передать по ссылке, вам не нужно делать ничего особенного на стороне вызывающей стороны, просто заставьте функцию взять ссылку, и компилятор выяснит это.