Bonjour à tous,

Je me demande pourquoi cette instruction ne compile pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#include <boost/mpl/vector.hpp>
#include <boost/mpl/pop_front.hpp>
#include <boost/mpl/empty.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/type_traits/is_same.hpp>
 
using namespace boost::mpl;
 
typedef vector<> empty_vector;
typedef vector<int> int_vector;
 
BOOST_MPL_ASSERT(( boost::is_same< empty_vector, pop_front<int_vector>::type > ));
j'ai le message d'erreur suivant:
1>error C2664: 'boost::mpl::assertion_failed'*: impossible de convertir le paramètre 1 de 'boost::mpl::failed ************boost::is_same<T,U>::* ***********' en 'boost::mpl::assert<false>::type'
1> with
1> [
1> T=empty_vector,
1> U=boost::mpl::pop_front_impl<boost::mpl::aux::vector_tag<1>>::apply<int_vector>::type
1> ]
1> Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
Je me serai attendu à ce que le type renvoyé par pop_front sur un vector à un type me renvoie le type vector<>