|
Boost : |
Subject: Re: [boost] Formal Review Request: TypeErasure
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-06-07 14:41:29
on Thu Jun 07 2012, "Hite, Christopher" <Christopher.Hite-AT-partner.commerzbank.com> wrote:
> Chris:
>>>> * people shouldn't use any to replace classic interfaces and virtual
>>>> functions
> Dave Abrahams:
>>>Excuse me, but why not? Doing polymorphism this way eliminates all
>> kinds of nastiness that we get with classic interfaces and virtual
>> functions.
> Luke:
>> Perhaps we should make sure the documentation clearly states what
>> kinds of nastiness the library allows us to avoid and how it is
>> intended to be used. It solves a lot of problems ....
>
> So the nice thing about the any vs. classic virtual functions is it is
> nonintrusive.
Actually, that's only one of many nice things. See Sean Parent's 2nd
talk from C++Now! Oh, the videos aren't posted yet.
Well, the chain of implications, off the top of my head, goes like this:
OOP => different sized objects being handled through the same interface
=> dynamic allocation (- complicated)
=> memory management (- hard)
and => reference semantics (- hard to reason about)
=> shared state (- hard to reason about)
=> MT synchronization
=> deadlocks, races, and inefficiency
In a nutshell, concept-based-runtime-polymorphism/type-erasure allows
you to have runtime polymorphism while preserving value semantics. The
value of that win is very commonly underestimated.
-- Dave Abrahams BoostPro Computing http://www.boostpro.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk