Fix dircopy for SCons V0.96.1
[senf.git] / Socket / SocketPolicy.ih
index 6d41c69..ccc0371 100644 (file)
@@ -50,7 +50,8 @@
 #include <boost/mpl/and.hpp>
 #include <boost/utility.hpp> // for enable_if
 
-#include "Utils/pool_alloc_mixin.hh"
+#include "../Utils/mpl.hh"
+#include "../Utils/pool_alloc_mixin.hh"
 
 ///////////////////////////////ih.p////////////////////////////////////////
 
@@ -112,11 +113,7 @@ namespace impl {
 
     struct nil {};
 
-    template <int N>
-    struct SocketPolicy_rv
-    { int v[N+1]; };
-
-    template <class Base, class Policy, int N>
+    template <class Base, class Policy, int _>
     struct MakeSocketPolicy_merge
     {};
 
@@ -126,11 +123,11 @@ namespace impl {
 
 #    define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC( SENF_SOCKET_POLICIES_N ) )
 #    define BOOST_PP_LOCAL_MACRO(n)                                                               \
-        SocketPolicy_rv<n> MakeSocketPolicy_merge_(                                               \
+        senf::mpl::rv<n> MakeSocketPolicy_merge_(                                                 \
             BOOST_PP_CAT( BOOST_PP_SEQ_ELEM( n, SENF_SOCKET_POLICIES ),Base)*);                   \
                                                                                                   \
         template <class Base, class Policy>                                                       \
-        struct MakeSocketPolicy_merge<Base,Policy,sizeof(SocketPolicy_rv<n>)>                     \
+        struct MakeSocketPolicy_merge<Base,Policy,n>                                              \
         {                                                                                         \
             typedef SocketPolicy<                                                                 \
                BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareMakeSocketPolicy_merge_member,                  \
@@ -149,7 +146,7 @@ namespace impl {
         struct apply
             : MakeSocketPolicy_merge<Base,
                                      Policy,
-                                     sizeof(MakeSocketPolicy_merge_(static_cast<Policy*>(0)))>
+                                     SENF_MPL_RV(MakeSocketPolicy_merge_(static_cast<Policy*>(0)))>
         {};
 
         template <class Base>
@@ -170,13 +167,13 @@ namespace impl {
         typename Base::SomePolicy *
 
     template <class Base>
-    SocketPolicy_rv<1> SocketPolicy_checkcompat_(
+    senf::mpl::rv<1> SocketPolicy_checkcompat_(
         BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareArguments, , SENF_SOCKET_POLICIES ) );
 
 #   undef SP_DeclareArguments
 
     template <class Base>
-    SocketPolicy_rv<2> SocketPolicy_checkcompat_( ... );
+    senf::mpl::rv<2> SocketPolicy_checkcompat_( ... );
 
     template <int Size>
     struct SocketPolicy_checkcompat
@@ -184,7 +181,7 @@ namespace impl {
     {};
 
     template<>
-    struct SocketPolicy_checkcompat<sizeof(SocketPolicy_rv<1>)>
+    struct SocketPolicy_checkcompat<1>
         : public boost::true_type
     {};
 
@@ -195,7 +192,7 @@ namespace impl {
 
     template <class Base, class Derived>
     struct SocketPolicy_compatibility
-        : public SocketPolicy_checkcompat< sizeof(
+        : public SocketPolicy_checkcompat< SENF_MPL_RV(
             SocketPolicy_checkcompat_<Base>(
                 BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareArguments, , SENF_SOCKET_POLICIES ) )) >
     {};