Boost logo

Boost :

Subject: Re: [boost] [optional] generates unnessesary code for trivial types
From: Nevin Liber (nevin_at_[hidden])
Date: 2012-01-27 17:10:48


On 27 January 2012 12:57, Simonson, Lucanus J
<lucanus.j.simonson_at_[hidden]> wrote:

>  Optional was implemented to be safe and slow because it was targeting safe and slow use cases.

You are saying it is *deliberately* slow??

> For POD types and anything that has a default constructor a std::pair<bool, T> seems fine to me.

I don't want to write a different style of code depending on whether
or not a type T is default constructible. I can't easily pass things
like this to templates because I have to write special cases all over
the place. Optional models my intent.

I want to take advantage of RVO.

Some things that are default constructible are still very expensive to
construct (such as std::deque under gcc).

When you initialize class members, do you use member intializer lists
for default constructible types or do you just throw a bunch of
assignments in the body of the constructor? If the former, why do you
do it, given that default construction followed by assignment "seems
fine" to you?

-- 
 Nevin ":-)" Liber  <mailto:nevin_at_[hidden]>  (847) 691-1404

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