Hi,

The following meta program compiles, except for the last (commented) line.
I expected it to work since it does so for the mpl::vector case.
Any ideas what I am doing wrong here?


#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/mpl/insert.hpp>
#include <boost/mpl/begin.hpp>
#include <boost/mpl/advance.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/equal.hpp>

using namespace boost;

template<class Sequence, class Pos, class T>
struct insert_at
{
typedef typename mpl::advance<typename mpl::begin<Sequence>::type, Pos>::type itr;
typedef typename mpl::insert<Sequence, itr, T>::type type;
};

typedef insert_at<mpl::vector<>, mpl::int_<0>, int>::type vector1_int;
BOOST_MPL_ASSERT(( mpl::equal<vector1_int, mpl::vector<int>>));

//Doesn't compile with VC2008
// typedef insert_at<fusion::vector<>, mpl::int_<0>, int>::type fusion_vector1_int;


Code is using boost-trunk, rather recently updated.

Thanks,
Christian