Fernando Cacciola wrote: >And pointers have historically been used to deal with optional >objects precisely because they model this concept.
I think this is important, and so I want to dwell on it for a moment. For many years, if a programmer needed optional functionality, she used a pointer. There are a large number of existing libraries and APIs that use pointers to convey exactly this notion. A pointer is essentially a defacto standard for this usage. Consider one more time, why do iterators look like pointers? I wouldn't be surprised if a similar discussion took place back in the day: A: "I've got it! Make iterators look like pointers!" B: "Hmm... That might confuse people. They aren't really pointers." A: "You're right, some operators won't work on iterators." C: "On the other hand, it would be convenient." A: "Exactly! " A,B,C: (thinks real hard) C: "Also, if we make iterators look like pointers, then we can write generic code that takes either. That way, we can interface to legacy systems with generic code." Eventually, they come up with concepts, which at the time I'm sure was a radical idea. If there weren't already a large number of libraries that use this idiom, then generic code wouldn't really benefit. Yes, this generic code is hypothetical right now. Since the OptionalValue concept has not been defined, nobody has tried to use it. If we do define it and release it into the wild, will it lead to better libraries? Consider your OS of choice's system APIs. How many functions take or return pointers for this purpose? Please do not dismiss the pointer interface until you have considered this. And remember that if you push hard enough, you will discover that smart pointers and iterators aren't really pointers. The equivalence doesn't need to be absolute; just *useful* and *safe*. Cheers- Augustus __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost