Index: signature.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/python/signature.hpp,v
retrieving revision 1.22
diff -u -r1.22 signature.hpp
--- signature.hpp	26 Jul 2004 00:32:05 -0000	1.22
+++ signature.hpp	11 Oct 2006 23:12:57 -0000
@@ -151,6 +151,30 @@
 }
 
 template <
+    class RT, class ClassT BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, class T)>
+inline BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+    RT, ClassT& BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)>
+get_signature(__cdecl RT(ClassT::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, T)) Q)
+{
+    return BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+            RT, ClassT& BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)
+        >();
+}
+
+template <
+    class RT, class ClassT BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, class T)>
+inline BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+    RT, ClassT& BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)>
+get_signature(RT(__stdcall ClassT::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, T)) Q)
+{
+    return BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+            RT, ClassT& BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)
+        >();
+}
+
+
+
+template <
     class Target
   , class RT
   , class ClassT
@@ -173,6 +197,53 @@
     >();
 }
 
+template <
+    class Target
+  , class RT
+  , class ClassT
+    BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, class T)
+>
+inline BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+    RT
+  , typename most_derived<Target, ClassT>::type&
+    BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)
+>
+get_signature(
+    RT(__cdecl ClassT::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, T)) Q
+  , Target*
+)
+{
+    return BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+        RT
+      , BOOST_DEDUCED_TYPENAME most_derived<Target, ClassT>::type&
+        BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)
+    >();
+}
+
+template <
+    class Target
+  , class RT
+  , class ClassT
+    BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, class T)
+>
+inline BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+    RT
+  , typename most_derived<Target, ClassT>::type&
+    BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)
+>
+get_signature(
+    RT(__stdcall ClassT::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, T)) Q
+  , Target*
+)
+{
+    return BOOST_PYTHON_LIST_INC(BOOST_PP_INC(N))<
+        RT
+      , BOOST_DEDUCED_TYPENAME most_derived<Target, ClassT>::type&
+        BOOST_PP_ENUM_TRAILING_PARAMS_Z(1, N, T)
+    >();
+}
+
+
 # undef Q
 # undef N
 

