/////////////////////////////////////////////////////////////////////////////// // modifier.hpp // // Copyright 2008 Eric Niebler. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_XPRESSIVE_DETAIL_STATIC_MODIFIER_HPP_EAN_10_04_2005 #define BOOST_XPRESSIVE_DETAIL_STATIC_MODIFIER_HPP_EAN_10_04_2005 // MS compatible compilers support #pragma once #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once # pragma warning(push) # pragma warning(disable : 4510) // default constructor could not be generated # pragma warning(disable : 4610) // user defined constructor required #endif #include #include #include namespace boost { namespace xpressive { namespace detail { /////////////////////////////////////////////////////////////////////////////// // modifier template struct modifier_op { typedef regex_constants::syntax_option_type opt_type; template struct apply { typedef typename proto::binary_expr< modifier_tag , typename proto::terminal::type , typename proto::result_of::as_child::type >::type type; }; template typename apply::type const operator ()(Expr const &expr) const { typename apply::type that = {{this->mod_}, proto::as_child(expr)}; return that; } operator opt_type() const { return this->opt_; } Modifier mod_; opt_type opt_; }; }}} #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma warning(pop) #endif #endif