|
Boost : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2024-12-03 13:25:28
Alexander Grund wrote:
> Am 03.12.24 um 12:47 schrieb Ivan Matek via Boost:
> >> And you never do this
> >>
> >> boost::hash2::hash_append( h, {}, v.x );
> >> boost::hash2::hash_append( h, {}, v.y );
> >> boost::hash2::hash_append( h, {}, v.z );
> >>
> >> You do this instead
> >>
> >> boost::hash2::hash_append( h, f, v.x );
> >> boost::hash2::hash_append( h, f, v.y );
> >> boost::hash2::hash_append( h, f, v.z );
> >
> > Yes, but then again I am passing f multiple times. I don't want it to
> > sound like I am making a big deal out of this, I can just do something
> > like(and I actually use this idiom a lot) const auto append = [&]
> > (const auto& val){hash_append (h, f, val);} and use that "partially
> > applied" helper, in case I actually need to do hash_append multiple
> > times.
> I think there is space for such a helper:
> boost::hash2::hasher append(h, f); // Or ...::hasher append(h) for default
> flavor
> append(v.x);
> append(v.y);
> append(v.z);
>
> As the equivalent for the above sequence. Basically make your lambda
> available as a named type.
> That might make it easier given that the flavor at the 2nd cannot be defaulted.
I already said this, but let's do it again: the flavor can't be defaulted on purpose,
because you shouldn't be defaulting it, as it's a mistake to do so.
You need to use the flavor passed as an argument, not the default one.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk