Hi there, I'm still playing with my vector of types example. Please
see what I'm doing:
#include <vector>
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace boost;
template <typename T>
struct add_vector
{
typedef std::vector<T> type;
};
struct A;
struct B;
struct C;
struct create_empty_vec
{
template< class T >
void operator()( T& t ) const
{
return std::vector<T>();
}
};
struct add_one
{
template< class T >
void operator()( T& vec ) const
{
vec.push_back( T() );
}
};
int main()
{
typedef mpl::list< A, B, C > _types_;
typedef mpl::transform1< _types_, add_vectormpl::_1 >::type
_mpl_list_of_vectors_;
typedef fusion::result_of::as_list<_mpl_list_of_vectors_>::type
_fusion_list_of_vectors_;
_fusion_list_of_vectors_ vectors;
fusion::for_each( vectors, create_empty_vec() );
return 0;
}
I have no idea why this code doesn't compile. My compiler (VC7.1) complaints:
test.cpp
C:\Program Files\Microsoft Visual Studio .NET
2003\Vc7\include\vector(795) : error C2036:
'std::vector<_Ty>::pointer' : unknown size
with
[
_Ty=boost::mpl::aux::resolve_bind_arg,boost::mpl::lambdaboost::mpl::_1,boost::mpl::void_::result_>::applyboost::mpl::_1>::type,boost::mpl::_2>::apply::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::a1,boost::mpl::aux::reverse_fold_impl<3,boost::mpl::begin<_types_>::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::a1,boost::mpl::aux::resolve_bind_argboost::mpl::_1>::type,boost::mpl::_2>::apply::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::a1,boost::mpl::aux::reverse_fold_impl<3,boost::mpl::begin<_types_>::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type
]
C:\Program Files\Microsoft Visual Studio .NET
2003\Vc7\include\vector(791) : while compiling class-template member
function 'void std::vector<_Ty>::_Tidy(void)'
with
[
_Ty=boost::mpl::aux::resolve_bind_arg,boost::mpl::lambdaboost::mpl::_1,boost::mpl::void_::result_>::applyboost::mpl::_1>::type,boost::mpl::_2>::apply::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::a1,boost::mpl::aux::reverse_fold_impl<3,boost::mpl::begin<_types_>::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type>::a1,boost::mpl::aux::resolve_bind_argboost::mpl::_1>::type,boost::mpl::_2>::apply::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::a1,boost::mpl::aux::reverse_fold_impl<3,boost::mpl::begin<_types_>::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::bkwd_state3,boost::mpl::deref::type,boost::mpl::end<_types_>::type,boost::mpl::inserterboost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::state,boost::mpl::bind2boost::mpl::aux::list_tag::apply<_types_>::type,boost::mpl::push_frontboost::mpl::na,boost::mpl::na>::operation>::type,boost::mpl::_1,boost::mpl::bind1boost::mpl::_1>::type,boost::mpl::_2>>,boost::mpl::arg<1>>::iter2>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na>::type
[snip]
Any help is appreciated,
Christian