
Joaquín Mª López Muñoz <joaquin@tid.es> writes:
Anyway, naming discussions aside, do you see value in such a thing being elaborated and eventually proposed to Boost?
From my brief examination of the implementation and examples provided, yes, it looks useful. I have no qualms with the idea and I have full confidence you'll implement it well. However, I don't think you should cast the naming problem aside as immaterial.
The links I provided described the interning facility in two other languages. In discussing those other languages, we don't usually hear about strings or symbols being "flyweights". We do hear "symbols are interned" or "strings are interned". Expanding these statements could yield something more like, "Strings are flyweight references to a particular unique instance in a global pool." We're both arguing that there's prior art here to justify the name. Your implementation includes both a reference mechanism and a pooling mechanism. "Flyweight" describes the former, but the pattern, at least by my reading, doesn't speak to comparing candidate instances and ensuring that there are no duplicates in the pool. That duplicate-avoidance policy is specifically addressed by interning. My concern is that I might overlook this library because its name does not capture what I would value about it most. Clearly I have biases, having been exposed to the "intern" terminology for years, so perhaps we can hear from others as to whether the name is appropriate. -- Steven E. Harris