On Wednesday 22 January 2003 08:35 am, Peter Dimov wrote: > From: "Douglas Gregor" <[EMAIL PROTECTED]> > > > On Tuesday 21 January 2003 04:24 pm, David Abrahams wrote: > > > Unai Uribarri <[EMAIL PROTECTED]> writes: > > > > Currently, any_cast doesn't allow to cast to > > > > references. Instead, you have obscure castings from > > > > any* to T returning T*. > > > > > > That sounds like a design mistake on the face of it. > > > > This comment has come up before, and everyone seems to agree that we'd > > prefer > > > the semantics that Unai proposes. I think the only reason that we haven't > > changed the semantics is that we don't want to change Kevlin's design > > without > > > hearing the reasons for the existing design. > > The pointer cast returns NULL on failure, the value cast throws > bad_any_cast.
That wouldn't change. The only difference is that the existing semantics return a copy of the ValueType when the type is correct, and throws bad_any_cast on failure. The signature is: template<typename ValueType> ValueType any_cast(const any & operand); In many cases, it would be more useful to get an actual reference to the held value, so the folllowing signature(s) would be preferred: template<typename ValueType> ValueType& any_cast(any & operand); template<typename ValueType> const ValueType& any_cast(const any & operand); If "operand" does not contain a value of type ValueType, any_cast throws bad_any_cast. Otherwise, it returns a reference to the held value. Why wouldn't we want this behavior? Doug _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost