|
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