Why struct opEquals must be const?
Nick Sabalausky
a at a.a
Sat Oct 16 23:57:02 PDT 2010
Is there a technical reason why the l- and r- values for opEquals must be
const? If the restriction is purely for the intuitive notion that there's no
heisenstructs, then I have an example I think might be worth consideration:
lazy caching.
If comparison isn't always needed and requires a potentially expensive
computation that isn't likely needed otherwise (for example, a wrapper for
string that does case-insensitive comparisons, if it's used in a situation
that does more assigning/slicing/etc than comparing), then it may make sense
to wait until an opEquals is called, and then compute the information and
cache it. But that requires mutating state and so can't be done in a struct
opEquals.
'Course, if there is a technical reason for the restriction, then all this
is moot.
More information about the Digitalmars-d
mailing list