16 Oct
2021
16 Oct
'21
10:44 p.m.
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?