From: "vladimir josef sykora" <[EMAIL PROTECTED]>
> template <class Sequence>
> struct foo {
> };
>
> // usage example :
>   typedef boost::mpl::vector<...>             types;
>   typedef foo<types>                              foo_types;
>   std::vector<foo_types>                         std_vect_foos;
>   std_vect_foos.push_back(foo<types>());
>
> When mpl::copy_backward is present (from boost/mpl/insert.hpp for
example),
> I get this error (gcc 3.2):
>
> `template<class
>    Sequence, class State, class BinaryOp> struct
boost::mpl::copy_backward'
> is
>    not a function,
> conflict with `
>    template<class _BI1, class _BI2> _BI2 std::copy_backward(_BI1, _BI1,
> _BI2)'
> in call to `copy_backward'
>
> Since std::copy_backward is found via ADL, I consider this IMHO a
stringent
> restriction to the use of mpl::insert & mpl::erase.

This is a g++ specific "feature", or rather a combination of two "features".

First, the standard library uses unqualified calls to standard library
algorithms.

Second, argument dependent lookup finds class names (such as
mpl::copy_backward.)

Many people consider both to be defects.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to