On Sun, Aug 31, 2003 at 11:11:10AM -0700, Mat Marcus wrote: > --On Sunday, August 31, 2003 1:35 PM -0400 Brian McNamara > >On Sun, Aug 31, 2003 at 11:59:42PM +0800, Joel de Guzman wrote: > >>It's really strange (and hard to explain) that you have to > >>dereference optional<B>. Example: > >> > >> F(tuple<A, optional<B>, C> args) > >> { > >> A a = get<1>(args); > >> B b = *get<2>(args); // strange! > >> C c = get<3>(args); > >> } > > > >I don't think it's strange at all; an optional<B> is not a B! > > That doesn't make it a pointer to B!
True. See my message of a moment ago, where I adopt the notion that '*' is just an unfortunate coincidence of names, and that any relationship between optional and pointers is mere happenstance. (This all despite the documentation on optional which explicitly describes the relationship; I am merely trying to present another way of looking at it which may be useful.) > >As another example, FC++ lists support conversion-to-bool > > There's conversion-to-bool again. I still wonder whether dispensing > with this would open the door to implicit conversions. I think no. I should mention in passing that, while in general I think "implicit conversions" are bad news and should be avoided whenever reasonable, I do think the "conversion to bool" is an exceptional case, simply because it is already so deeply ingrained in C++ (and C) language/culture. (Fortunately bool has a very narrow interface, so it doesn't get us into too much trouble. Implicit conversions to user-defined types may create arbitrary interface conflicts/conceptual ambiguities, and this is where the real trouble begins.) -- -Brian McNamara ([EMAIL PROTECTED]) _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost