1414
1515namespace boost { namespace python { namespace objects {
1616
17+ namespace detail
18+ {
19+ // Use of this workaround as opposed to straightforward mpl::at
20+ // needed for vc7, for some reason.
21+ template <unsigned N, class Sequence >
22+ struct at
23+ {
24+ private:
25+ typedef typename mpl::at_algorithm_traits<
26+ typename mpl::sequence_traits<Sequence>::sequence_category
27+ >::template algorithm<N, Sequence>::type base;
28+ public:
29+ typedef typename base::type type;
30+ };
31+ }
32+
1733template <int nargs> struct make_holder ;
1834
1935template <>
@@ -39,7 +55,7 @@ struct make_holder<1>
3955 struct apply
4056 {
4157 typedef typename mpl::apply1<Generator,T>::type holder;
42- typedef typename mpl ::at<0 ,ArgList>::type t0;
58+ typedef typename detail ::at<0 ,ArgList>::type t0;
4359 typedef typename forward<t0>::type f0;
4460
4561 static void execute (
@@ -58,9 +74,9 @@ struct make_holder<2>
5874 struct apply
5975 {
6076 typedef typename mpl::apply1<Generator,T>::type holder;
61- typedef typename mpl ::at<0 ,ArgList>::type t0;
77+ typedef typename detail ::at<0 ,ArgList>::type t0;
6278 typedef typename forward<t0>::type f0;
63- typedef typename mpl ::at<1 ,ArgList>::type t1;
79+ typedef typename detail ::at<1 ,ArgList>::type t1;
6480 typedef typename forward<t1>::type f1;
6581
6682 static void execute (
@@ -78,11 +94,11 @@ struct make_holder<3>
7894 struct apply
7995 {
8096 typedef typename mpl::apply1<Generator,T>::type holder;
81- typedef typename mpl ::at<0 ,ArgList>::type t0;
97+ typedef typename detail ::at<0 ,ArgList>::type t0;
8298 typedef typename forward<t0>::type f0;
83- typedef typename mpl ::at<1 ,ArgList>::type t1;
99+ typedef typename detail ::at<1 ,ArgList>::type t1;
84100 typedef typename forward<t1>::type f1;
85- typedef typename mpl ::at<2 ,ArgList>::type t2;
101+ typedef typename detail ::at<2 ,ArgList>::type t2;
86102 typedef typename forward<t2>::type f2;
87103
88104 static void execute (
@@ -100,13 +116,13 @@ struct make_holder<4>
100116 struct apply
101117 {
102118 typedef typename mpl::apply1<Generator,T>::type holder;
103- typedef typename mpl ::at<0 ,ArgList>::type t0;
119+ typedef typename detail ::at<0 ,ArgList>::type t0;
104120 typedef typename forward<t0>::type f0;
105- typedef typename mpl ::at<1 ,ArgList>::type t1;
121+ typedef typename detail ::at<1 ,ArgList>::type t1;
106122 typedef typename forward<t1>::type f1;
107- typedef typename mpl ::at<2 ,ArgList>::type t2;
123+ typedef typename detail ::at<2 ,ArgList>::type t2;
108124 typedef typename forward<t2>::type f2;
109- typedef typename mpl ::at<3 ,ArgList>::type t3;
125+ typedef typename detail ::at<3 ,ArgList>::type t3;
110126 typedef typename forward<t3>::type f3;
111127
112128 static void execute (
@@ -124,15 +140,15 @@ struct make_holder<5>
124140 struct apply
125141 {
126142 typedef typename mpl::apply1<Generator,T>::type holder;
127- typedef typename mpl ::at<0 ,ArgList>::type t0;
143+ typedef typename detail ::at<0 ,ArgList>::type t0;
128144 typedef typename forward<t0>::type f0;
129- typedef typename mpl ::at<1 ,ArgList>::type t1;
145+ typedef typename detail ::at<1 ,ArgList>::type t1;
130146 typedef typename forward<t1>::type f1;
131- typedef typename mpl ::at<2 ,ArgList>::type t2;
147+ typedef typename detail ::at<2 ,ArgList>::type t2;
132148 typedef typename forward<t2>::type f2;
133- typedef typename mpl ::at<3 ,ArgList>::type t3;
149+ typedef typename detail ::at<3 ,ArgList>::type t3;
134150 typedef typename forward<t3>::type f3;
135- typedef typename mpl ::at<4 ,ArgList>::type t4;
151+ typedef typename detail ::at<4 ,ArgList>::type t4;
136152 typedef typename forward<t4>::type f4;
137153
138154 static void execute (
@@ -150,17 +166,17 @@ struct make_holder<6>
150166 struct apply
151167 {
152168 typedef typename mpl::apply1<Generator,T>::type holder;
153- typedef typename mpl ::at<0 ,ArgList>::type t0;
169+ typedef typename detail ::at<0 ,ArgList>::type t0;
154170 typedef typename forward<t0>::type f0;
155- typedef typename mpl ::at<1 ,ArgList>::type t1;
171+ typedef typename detail ::at<1 ,ArgList>::type t1;
156172 typedef typename forward<t1>::type f1;
157- typedef typename mpl ::at<2 ,ArgList>::type t2;
173+ typedef typename detail ::at<2 ,ArgList>::type t2;
158174 typedef typename forward<t2>::type f2;
159- typedef typename mpl ::at<3 ,ArgList>::type t3;
175+ typedef typename detail ::at<3 ,ArgList>::type t3;
160176 typedef typename forward<t3>::type f3;
161- typedef typename mpl ::at<4 ,ArgList>::type t4;
177+ typedef typename detail ::at<4 ,ArgList>::type t4;
162178 typedef typename forward<t4>::type f4;
163- typedef typename mpl ::at<5 ,ArgList>::type t5;
179+ typedef typename detail ::at<5 ,ArgList>::type t5;
164180 typedef typename forward<t5>::type f5;
165181
166182 static void execute (
0 commit comments