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
>conversions?

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
types.

Kevlin

-- 
____________________________________________________________
   Kevlin Henney                   phone:  +44 117 942 2990
   mailto:kevlin_at_[hidden]     mobile: +44 7801 073 508
   http://www.curbralan.com        fax:    +44 870 052 2289
   Curbralan: Consultancy + Training + Development + Review
____________________________________________________________

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk