From: Gennadiy Rozental (rogeeff_at_[hidden])
Date: 2002-07-18 21:27:35


I've started to read "Boost C++ Metaprogramming Library" paper. It's really
very interesting. Sadly, I did not read it before.

I have couple questions:

Page 4 1.2.3 : "The structure destrubed by types ...". Did you mean
my_types?
Page 5 1.2.3 : In example 1, third comments. Did you mean <=?
Page 6 1.3 : It seems that all_permutation could be implemented shorter,
something like this (not tested!)

// return an array of the N! permutations of x
template< typename T >
wrapper< typename permutation_holder<T>::type >
all_permutations(T const& in)
{
    wrapper<typename permutation_holder<T>::type> result;

    unsigned const N = sizeof(T) / sizeof(**result.x);
    unsigned const result_size = sizeof(result.x) / sizeof(T);
    T* src = &in; // (or &&*in?)

    for( T* dst = result.x; dst != result.x + result_size; ++dst )
    {
        std::copy(*src, *src + N, *dst);
        std::next_permutation(*dst, *dst + N);
        src = dst;
    }
    return result;
}

Page 8 2.1 : Does introduction of mpl::if_ mean that we gonna depricate
select_type?
Page 11 2.1.1 : At the end You discussing the way how to eliminate
instantiation of boost::remove_pointer. The price for it instantiation of
mpl::identity. You did not mention it.
Page 15 2.2.5. Here you first mention type _1 without any qualifier. Would
not it cause an ambigility if used simultaniously with boost::lambda or
boost::bind facility. In general don't you think we have to much _1 all over
the place?
Page 16 2.3.3 : You mention Sequence concepts without defining what are
they. At least link would be good.
Page 16 2.3.3 : You introduced tiny_list. I did not get why is it Sequece at
all. It does not fit to Sequence definition. Also what is
tiny_list_iterator<T,0>::prior (and why not prev?)? Would not it cause
indefinite instantiation. Later you sad that tiny_list model Bidirectional
sequence, what is unclear without concept definition.

Gennadiy.

P.S. BTW user is he or she in english?