00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef PHYSICAL_DIMENSION_VECTOR
00015 #define PHYSICAL_DIMENSION_VECTOR
00016
00017 #include "physical/detail/zero_vector.hpp"
00018
00019 #include <boost/mpl/advance.hpp>
00020 #include <boost/mpl/insert.hpp>
00021
00022 namespace physical {
00023
00024 namespace detail {
00025
00026
00027
00028 template<int POS, int NUM>
00029 struct dimension_vector {
00030 typedef typename zero_vector<NUM-1>::type zvec;
00031 typedef typename boost::mpl::advance<typename boost::mpl::begin<zvec>::type, boost::mpl::int_<POS> >::type insert_position;
00032 typedef typename boost::mpl::insert<zvec, insert_position , boost::mpl::integral_c<int,1> >::type dimension_vector_t;
00033 typedef dimension_vector_t type;
00034 };
00035
00036
00037 };
00038
00039 };
00040
00041 #endif