[prev in list] [next in list] [prev in thread] [next in thread] 

List:       boost-docs
Subject:    Re: [Boost-docs] stl mini-review
From:       David Abrahams <dave () boost-consulting ! com>
Date:       2007-07-31 15:33:39
Message-ID: 87fy3437vw.fsf () grogan ! peloton
[Download RAW message or body]


on Tue Jul 24 2007, Andrew Sutton <asutton-AT-cs.kent.edu> wrote:

>> Examples are VITAL - without this most peoples reaction is "Huh"?
>>
>> And there needs to be LOTS of examples, and LOTS of comments saying  
>> what the examples show, however obvious it may seem to those who
>> write the C++ Standard ;-)
>>
>> What about examples of user defined types?
>>
>> Perhaps discuss How would you tell if something is default  
>> constructible?  By Test?  By examining code?
>
> I completely rewrote the DefaultConstructible concept doc this  
> morning - it's taken 3 this morning. Please, re-review that one page:  
> it's here (and it's committed this time).
>
> http://tinyurl.com/2rb477
>
> Changes include:
> 	1. Mostly rewriting the entire concept to get rid of the word  
> 'instance' and it derivatives.
> 	2. Added lots of stuff about initialization - it's probably wrong.
> 	3. Examples.
>
> There are some other changes.
>
> I do have a concern that the idea of default-initialized, zero- 
> initialized, value-initialized, and uninitialized may dominate the  
> concept more than the notion of default construct-ability. My  
> experience is that algorithms requiring default construction will do  
> so without actual regard for the initial value because they assign  
> values later, and so an in-depth discussion of initialization within  
> this concept may be out of place. 

I think your instincts are good here.  One thing to remember above all
about concept documentation is that the very existence of concepts is
100% driven by algorithm requirements.  

If the DefaultConstructible concept doesn't say anything about the
value of a default constructed object, then algorithms requiring
DefaultConstructible<T> aren't making any assumptions about that
value.  I'm sure all those algorithms also require Assignable<T>.

It may be that there are some semantic requirements missing from
algorithms that require DefaultConstructible, because, IIRC, there's a
lot you can't do with a default-constructed pointer: it might not even
be copiable without invoking undefined behavior (look it up because I
may have forgotten the details).  IIRC you can only assign to and
destroy a default-constructed pointer.  So an algorithm requiring
DefaultConstructible<T>, Assignable<T>, and CopyConstructible<T> may
be slightly overspecified, unintentionally requiring that a
default-constructed T be copiable.

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

The Astoria Seminar ==> http://www.astoriaseminar.com


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic