Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2008-06-30 09:37:10


Dean Michael Berris wrote:
> On Thu, Jun 26, 2008 at 9:08 PM, David Abrahams <dave_at_[hidden]> wrote:
>> I've been thinking for a long time that we need to develop a coordinated
>> approach to developing some of these more "basic" facilities. We have
>> too many great bits and pieces that don't quite interoperate as well as
>> they could. This was driven home for me recently when I taught a course
>> on Boost with hands-on workshops and the number of pitfalls that people
>> (including me!) ran into was just too high. In order to really make the
>> case for the power of library use, it needs to be easier to write
>> expressive C++.
>>
>
> What would be helpful I think would be a statement of exactly what the
> problems are with the great bits and pieces and in what particular
> context they are considered problem(s).

OK, but it's not just about problems.

> I think it would be easy to
> agree that we'd love to have everything in Boost work like it new
> every other library in it, but that makes Boost more a Framework than
> a library collection. I don't necessarily think that would be a Bad
> Thing, but rather too close a coupling for my taste.

I don't think there's anything "coupled" about coordinating foundational
parts so they interoperate properly.

>> Here are the parts and topics that I see as being in the category:
>>
>> result_of

* Too hard to define result<> templates for polymorphic function objects.

* A whole spate of questions that came up in
http://article.gmane.org/gmane.comp.lib.boost.devel/173370 were not
answered with a page of documentation, utility library, or other
facility. I still don't know what the upshot was

>> BOOST_TYPEOF

* Doesn't coordinate with result_of

>> range_ex

* Not in Boost. Should have pipe syntax. Maybe should use expression
templates and be lazier.

>> BOOST_FOREACH

* We don't have range_ex ;-)

>> our own implementations of std::containers (in interprocess, IIRC)

* Not well-known.
* Not in a general place (bound to interprocess?)
* Ought to support move semantics

>> lambda/phoenix/bind

* Incompatible placeholders
* Been waiting for the lambda/phoenix merger forever
* Lambda has lots of limitations and gotchas that we can improve on now
* Phoenix 2.0 not in Boost

>> move semantics

* Not supported by many foundational Boost types that could benefit
(e.g. shared_ptr)
* No general move semantics library in Boost

>> Boost.Iterator

* Needs an update (e.g. "new iterator concepts" have to go -- C++0x
resolves that differently by simply allowing proxies everywhere)
* Several important fixes and features needed

>> Boost.Algorithm

* Should support ranges, move semantics, segmented iterators, property maps

>> segmented iterator support (http://lafstern.org/matt/segmented.pdf)
>> property maps

The above are just related to the rest of them.

> How about we first collect the problems you encounter and what other
> people already encounter with the specific libraries you've listed
> above -- and what precisely or roughly you'd like to achieve with
> coodinating the effort(s) of the above.

* More "it just works out of the box" experience
* More efficiency!

> Would it be safe to say you'd like to coordinate these to achieve true
> "expressive C++" with libraries?

Something like that. I guess efficiency is the other big concern.

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