1 ///////////////////////////////////////////////////////////////////////////////
4 // Copyright 2008 Eric Niebler. Distributed under the Boost
5 // Software License, Version 1.0. (See accompanying file
6 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 #ifndef BOOST_XPRESSIVE_DETAIL_STATIC_MODIFIER_HPP_EAN_10_04_2005
9 #define BOOST_XPRESSIVE_DETAIL_STATIC_MODIFIER_HPP_EAN_10_04_2005
11 // MS compatible compilers support #pragma once
14 # pragma warning(push)
15 # pragma warning(disable : 4510) // default constructor could not be generated
16 # pragma warning(disable : 4610) // user defined constructor required
19 #include <boost/xpressive/detail/detail_fwd.hpp>
20 #include <boost/proto/traits.hpp>
21 #include <boost/xpressive/regex_constants.hpp>
23 namespace boost { namespace xpressive { namespace detail
26 ///////////////////////////////////////////////////////////////////////////////
28 template<typename Modifier>
31 typedef regex_constants::syntax_option_type opt_type;
33 template<typename Expr>
36 typedef typename proto::binary_expr<
38 , typename proto::terminal<Modifier>::type
39 , typename proto::result_of::as_child<Expr const>::type
43 template<typename Expr>
44 typename apply<Expr>::type const
45 operator ()(Expr const &expr) const
47 typename apply<Expr>::type that = {{this->mod_}, proto::as_child(expr)};
51 operator opt_type() const