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