Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2021-10-16 22:44:27


At the moment, boost::hash_value for complex<T> is specified as

    When T is a built in type and val.imag() == 0, the result is equal
    to hash_value(val.real()). Otherwise an unspecified value, except
    that equal arguments shall yield the same result.

This is a bit odd; the natural implementation for a two-argument
point/tuple type is

        std::size_t seed = 0;

        boost::hash_combine( seed, v.real() );
        boost::hash_combine( seed, v.imag() );

        return seed;

Can anyone offer an opinion on whether or why the original behavior
is preferable?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk