From aa705b07f3f7812a6ebc2a2b3eae92a57758d4ea Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Fri, 15 Mar 2002 00:25:43 +0000 Subject: [PATCH] VC7 workaround [SVN r13201] --- include/boost/python/object/make_holder.hpp | 58 +++++++++++++-------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/include/boost/python/object/make_holder.hpp b/include/boost/python/object/make_holder.hpp index 871ed059..5268bde4 100644 --- a/include/boost/python/object/make_holder.hpp +++ b/include/boost/python/object/make_holder.hpp @@ -14,6 +14,22 @@ namespace boost { namespace python { namespace objects { +namespace detail +{ + // Use of this workaround as opposed to straightforward mpl::at + // needed for vc7, for some reason. + template + struct at + { + private: + typedef typename mpl::at_algorithm_traits< + typename mpl::sequence_traits::sequence_category + >::template algorithm::type base; + public: + typedef typename base::type type; + }; +} + template struct make_holder; template <> @@ -39,7 +55,7 @@ struct make_holder<1> struct apply { typedef typename mpl::apply1::type holder; - typedef typename mpl::at<0,ArgList>::type t0; + typedef typename detail::at<0,ArgList>::type t0; typedef typename forward::type f0; static void execute( @@ -58,9 +74,9 @@ struct make_holder<2> struct apply { typedef typename mpl::apply1::type holder; - typedef typename mpl::at<0,ArgList>::type t0; + typedef typename detail::at<0,ArgList>::type t0; typedef typename forward::type f0; - typedef typename mpl::at<1,ArgList>::type t1; + typedef typename detail::at<1,ArgList>::type t1; typedef typename forward::type f1; static void execute( @@ -78,11 +94,11 @@ struct make_holder<3> struct apply { typedef typename mpl::apply1::type holder; - typedef typename mpl::at<0,ArgList>::type t0; + typedef typename detail::at<0,ArgList>::type t0; typedef typename forward::type f0; - typedef typename mpl::at<1,ArgList>::type t1; + typedef typename detail::at<1,ArgList>::type t1; typedef typename forward::type f1; - typedef typename mpl::at<2,ArgList>::type t2; + typedef typename detail::at<2,ArgList>::type t2; typedef typename forward::type f2; static void execute( @@ -100,13 +116,13 @@ struct make_holder<4> struct apply { typedef typename mpl::apply1::type holder; - typedef typename mpl::at<0,ArgList>::type t0; + typedef typename detail::at<0,ArgList>::type t0; typedef typename forward::type f0; - typedef typename mpl::at<1,ArgList>::type t1; + typedef typename detail::at<1,ArgList>::type t1; typedef typename forward::type f1; - typedef typename mpl::at<2,ArgList>::type t2; + typedef typename detail::at<2,ArgList>::type t2; typedef typename forward::type f2; - typedef typename mpl::at<3,ArgList>::type t3; + typedef typename detail::at<3,ArgList>::type t3; typedef typename forward::type f3; static void execute( @@ -124,15 +140,15 @@ struct make_holder<5> struct apply { typedef typename mpl::apply1::type holder; - typedef typename mpl::at<0,ArgList>::type t0; + typedef typename detail::at<0,ArgList>::type t0; typedef typename forward::type f0; - typedef typename mpl::at<1,ArgList>::type t1; + typedef typename detail::at<1,ArgList>::type t1; typedef typename forward::type f1; - typedef typename mpl::at<2,ArgList>::type t2; + typedef typename detail::at<2,ArgList>::type t2; typedef typename forward::type f2; - typedef typename mpl::at<3,ArgList>::type t3; + typedef typename detail::at<3,ArgList>::type t3; typedef typename forward::type f3; - typedef typename mpl::at<4,ArgList>::type t4; + typedef typename detail::at<4,ArgList>::type t4; typedef typename forward::type f4; static void execute( @@ -150,17 +166,17 @@ struct make_holder<6> struct apply { typedef typename mpl::apply1::type holder; - typedef typename mpl::at<0,ArgList>::type t0; + typedef typename detail::at<0,ArgList>::type t0; typedef typename forward::type f0; - typedef typename mpl::at<1,ArgList>::type t1; + typedef typename detail::at<1,ArgList>::type t1; typedef typename forward::type f1; - typedef typename mpl::at<2,ArgList>::type t2; + typedef typename detail::at<2,ArgList>::type t2; typedef typename forward::type f2; - typedef typename mpl::at<3,ArgList>::type t3; + typedef typename detail::at<3,ArgList>::type t3; typedef typename forward::type f3; - typedef typename mpl::at<4,ArgList>::type t4; + typedef typename detail::at<4,ArgList>::type t4; typedef typename forward::type f4; - typedef typename mpl::at<5,ArgList>::type t5; + typedef typename detail::at<5,ArgList>::type t5; typedef typename forward::type f5; static void execute(