Boost logo

Boost :

From: Cromwell Enage (sponage_at_[hidden])
Date: 2005-05-18 21:13:30


1. For type extraction, the name "binding" is *much*
better than the name "index_result".

2. With regard to the rvalue issue recently tackled
by Dave Abrahams and Daniel Wallin:
    2.1. In my projects, I seldom assign a possible
rvalue to a const reference; I almost always use a
const variable. The functions for which I require
named parameters are initializer functions; that is,
they build containers, graphs, mazes, etc. The cost
of making even several copies of mostly primitive
objects is negligible in comparison.
    2.2. The handful of times I do bind an rvalue to
a const reference, I don't even need the object; I
just want its type, and the static functions
associated with it. All in all, no problems here.

3. By default, most of the property maps used by the
BGL are created in the following manner:

    make_iterator_property_map(
        std::vector<ValueType>(
            num_vertices(graph)
        ).begin()
      , index_map
      , ValueType()
    );

Assuming such a call is expensive enough that it
should be a lazy default, the corresponding code (if
I'm not mistaken) would be:

    typedef typename
              property_map<Graph,vertex_index_t>::type
            VertexIndexMap;
            ...
    typedef std::vector<ValueType>
            ValueVector;
            ...
    VertexIndexMap
        index_map = get(vertex_index_t(), graph);
            ...
    function_impl(
        graph
      , p[
            some_named_parameter
         || bind(
                &make_iterator_property_map<
                    typename ValueVector::iterator
                  , ValueType
                  , VertexIndexMap
>
              , ValueVector(num_vertices(g)).begin()
              , index_map
              , ValueType()
            );
        ]
      , ...
    );

    3.1. A new user may easily neglect to specify the
template parameter types by naively expecting
Boost.Bind to accept function templates just as it
does ordinary functions. (I sure did.) This is not a
Boost.Parameter issue per se, but if one expects to
commonly use Boost.Bind to produce lazy defaults,
perhaps a gentle warning would be in order.
    3.2. BTW, according to
<http://www.boost.org/libs/property_map/iterator_property_map.html>,
ValueType and IndexMap should be the third and second
template parameters, respectively. Should
<boost/property_map.hpp> be fixed to match its
documentation?
    3.3. These are minor issues for me, but they may
be major concerns for Doug Gregor, Jeremy Siek, et al.
if they're revamping the BGL to use Boost.Parameter.

4. Ah, the joys of GUI programming...
    4.1. Even the simplest WxWidgets program grinds
to a halt when calling a function that uses the
Boost.Parameter mechanism. The same goes for FLTK and
FOX.
    4.2. OTOH, Irrlicht
<http://irrlicht.sourceforge.net/> gives full
cooperation. The only apparent difference between
this library and the others (aside from the fact that
it is mainly a 3D library) is that it opens up a DOS
box in the background. IIRC a similar concern was
posted a while back, I think wrt Boost.Test + GUIs.
    4.3. I haven't had the time to produce simple
test cases. If you want them, let me know.

                              Cromwell D. Enage

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com


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