В вашем заявлении std::cout << "Hello, world!" << print( std::cout ) << std::endl
не определено, происходит ли std::cout << "Hello, world!"
до или после print( std::cout )
. Вот почему порядок может быть не таким, каким вы ожидаете.
Значение hex исходит из того факта, что вы также выполняете std::cout << std::cout
(print
возвращает std::cout
, который подается в <<
цепь). Правая рука std::cout
преобразуется в void *
и печатается на выходе.