Update of /cvsroot/boost/boost/boost/xpressive/proto
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv12013/proto

Modified Files:
        matches.hpp 
Log Message:
get lambda-style matching of terminals working again

Index: matches.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/matches.hpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- matches.hpp 30 Jan 2007 21:51:58 -0000      1.32
+++ matches.hpp 31 Jan 2007 17:47:45 -0000      1.33
@@ -64,16 +64,37 @@
             template<typename And>
             struct last;
 
+            template<typename T, typename U>
+            struct lambda_matches
+              : mpl::false_
+            {};
+
+            // wrap_terminal
             template<typename T>
             struct wrap_terminal
             {
                 wrap_terminal(T const &);
+                
+                template<typename U>
+                wrap_terminal(U const &, typename enable_if<lambda_matches<U, 
T> >::type * = 0 );
             };
 
             template<typename T>
             struct wrap_terminal<T &>
             {
                 wrap_terminal(T &);
+                
+                template<typename U>
+                wrap_terminal(U &, typename enable_if<lambda_matches<U, T> 
>::type * = 0 );
+            };
+
+            template<typename T>
+            struct wrap_terminal<T const &>
+            {
+                wrap_terminal(T const &);
+
+                template<typename U>
+                wrap_terminal(U const &, typename enable_if<lambda_matches<U, 
T> >::type * = 0 );
             };
 
             // vararg_matches_impl
@@ -116,7 +137,7 @@
             {};
 
             template<template<typename> class T, typename Expr0, typename 
Grammar0>
-            struct terminal_matches<T<Expr0>, T<Grammar0> >
+            struct lambda_matches<T<Expr0>, T<Grammar0> >
               : terminal_matches<Expr0, Grammar0>
             {};
 
@@ -333,7 +354,7 @@
                 BOOST_PP_ENUM_TRAILING_PARAMS(N, typename Expr)
                 BOOST_PP_ENUM_TRAILING_PARAMS(N, typename Grammar)
             >
-            struct terminal_matches<T<BOOST_PP_ENUM_PARAMS(N, Expr)>, 
T<BOOST_PP_ENUM_PARAMS(N, Grammar)> >
+            struct lambda_matches<T<BOOST_PP_ENUM_PARAMS(N, Expr)>, 
T<BOOST_PP_ENUM_PARAMS(N, Grammar)> >
               : BOOST_PP_CAT(and, N)<
                     BOOST_PROTO_DEFINE_TERMINAL_MATCHES(~, 0, ~)::value,
                     BOOST_PP_ENUM_SHIFTED(N, 
BOOST_PROTO_DEFINE_TERMINAL_MATCHES, ~)


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to