Update of /cvsroot/boost/boost/boost/xpressive/proto/detail
In directory
sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19904/boost/xpressive/proto/detail
Modified Files:
funop.hpp
Log Message:
rename left_shift to shift_left, non-terminals do not get non-const overloads
for op=, op[] and op() for better compile times
Index: funop.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/proto/detail/funop.hpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- funop.hpp 30 Apr 2007 23:07:18 -0000 1.8
+++ funop.hpp 21 May 2007 03:21:34 -0000 1.9
@@ -10,30 +10,54 @@
#error Do not include this file directly
#endif
-template<typename Expr BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),
typename A)>
-struct BOOST_PP_CAT(funop, BOOST_PP_ITERATION())
-{
- typedef expr<
- tag::function
- , BOOST_PP_CAT(args, BOOST_PP_INC(BOOST_PP_ITERATION()))<
- ref_<Expr>
+ template<typename Expr BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),
typename A)>
+ struct BOOST_PP_CAT(funop, BOOST_PP_ITERATION())
+ {
+ typedef expr<
+ tag::function
+ , BOOST_PP_CAT(args, BOOST_PP_INC(BOOST_PP_ITERATION()))<
+ ref_<Expr>
+ BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(
+ BOOST_PP_ITERATION()
+ , typename result_of::as_arg<A
+ , >::type BOOST_PP_INTERCEPT
+ )
+ >
+ > type;
+
+ static type const call(
+ Expr &expr
+ BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(BOOST_PP_ITERATION(), A, &a)
+ )
+ {
+ type that = {
+ {expr}
+ BOOST_PP_ENUM_TRAILING(BOOST_PP_ITERATION(),
BOOST_PROTO_AS_OP, _)
+ };
+ return that;
+ }
+ };
+
+ template<typename Expr BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),
typename A), typename This>
+ struct funop<Expr(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), A)), This>
+ : BOOST_PP_CAT(funop, BOOST_PP_ITERATION())<
+ This
BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(
BOOST_PP_ITERATION()
- , typename result_of::as_arg<A
+ , typename remove_reference<A
, >::type BOOST_PP_INTERCEPT
)
>
- > type;
+ {};
- static type const call(
- Expr &expr
- BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(BOOST_PP_ITERATION(), A, &a)
- )
- {
- type that = {
- {expr}
- BOOST_PP_ENUM_TRAILING(BOOST_PP_ITERATION(), BOOST_PROTO_AS_OP, _)
- };
- return that;
- }
-};
+ template<typename Expr BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_ITERATION(),
typename A), typename This>
+ struct funop<Expr const(BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), A)),
This>
+ : BOOST_PP_CAT(funop, BOOST_PP_ITERATION())<
+ This const
+ BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(
+ BOOST_PP_ITERATION()
+ , typename remove_reference<A
+ , >::type BOOST_PP_INTERCEPT
+ )
+ >
+ {};
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs