Boost logo

Boost :

From: Kevlin Henney (kevlin_at_[hidden])
Date: 2004-02-28 11:45:26

In message <uk727uuvv.fsf_at_[hidden]>, David Abrahams
<dave_at_[hidden]> writes
>>>The conversion to boost::any isn't a widening conversion in the usual
>>>sense, though, is it? Normally, a widening conversion preserves not
>>>only the information but the *interface* of the original data -- you
>>>wouldn't consider an implicit conversion from int to string a widening
>>>conversion, would you?
>> Your assumption is not quite correct: most widening conversions are
>> not interface preserving.
>So you're saying it's not even a little correct, it sounds like. Can
>you give some examples of non-interface-preserving widening

T * to void *, derived * to base *, int (32 bit) to double (64 bit), T *
to const T *, etc. Widening conversions are in the direction of the
supertype, hence they often have a subset of the interface of source
type. The corresponding narrowing of the interface with the widening of
the type is not always the case, eg an int to long is effectively
interface preserving -- the same set of operators is supported for both


   Kevlin Henney                   phone:  +44 117 942 2990
   mailto:kevlin_at_[hidden]     mobile: +44 7801 073 508        fax:    +44 870 052 2289
   Curbralan: Consultancy + Training + Development + Review

Boost list run by bdawes at, gregod at, cpdaniel at, john at