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> {};