30 #ifndef SACADO_MPL_VECTOR_HPP 
   31 #define SACADO_MPL_VECTOR_HPP 
   34 #ifdef HAVE_SACADO_CXX11 
   56     template <
typename... Args>
 
   58       vector_size<Args...> {
 
   59       typedef vector_tag tag;
 
   64     template <
class Vector, 
int Pos>
 
   65     struct vector_iterator {
 
   66       static const int value = Pos;
 
   71     struct size_impl<vector_tag> {
 
   72       template <
class Vector>
 
   74         static const int value = Vector::sz;
 
   80     struct begin_impl<vector_tag> {
 
   81       template <
class Vector>
 
   83         typedef vector_iterator<Vector,0> type;
 
   89     struct end_impl<vector_tag> {
 
   90       template <
class Vector>
 
   92         typedef vector_iterator<Vector,Vector::sz> type;
 
   97     template <
class Vector, 
int Pos>
 
   98     struct next< vector_iterator<Vector,Pos> > {
 
   99       typedef vector_iterator<Vector,Pos+1> type;
 
  103     template <
class Vector, 
int Pos>
 
  104     struct deref< vector_iterator<Vector,Pos> > : mpl::at<Vector,Pos> {};
 
  118     struct at_impl<vector_tag, Pos> {
 
  119       template <
class Vector>
 
  120       struct apply : vector_at<Vector,Pos> {};
 
  125     struct push_back_impl<vector_tag> {
 
  126       template <
class Vector, 
class T>
 
  127       struct apply : vector_push_back<Vector, T> {};