| Home | Libraries | People | FAQ | More

## Struct insert

boost::xpressive::op::insert

## Synopsis

    // In header: <boost/xpressive/regex_actions.hpp>

    struct insert {
      // member classes/structs/unions
      template<typename Sig, typename EnableIf = void>
      struct result {
      };
      template<typename This, typename Cont, typename It>
      struct result<This(Cont, It, It), void> {
        // types
        typedef void type;
      };
      template<typename This, typename Cont, typename It, typename Size,
               typename Value>
      struct result<This(Cont, It, Size, Value), typename disable_if< is_integral< typename remove_const< typename remove_reference< It >::type >::type > >::type> {
        // types
        typedef void type;
      };
      template<typename This, typename Cont, typename It, typename Value>
      struct result<This(Cont, It, Value), typename disable_if< mpl::or_< is_integral< typename remove_const< typename remove_reference< It >::type >::type >, is_same< typename remove_const< typename remove_reference< It >::type >::type, typename remove_const< typename remove_reference< Value >::type >::type > > >::type> {
        // types
        typedef remove_reference< Cont >::type::iterator type;
      };
      template<typename This, typename Cont, typename Size, typename A0,
               typename A1>
      struct result<This(Cont, Size, A0, A1), typename enable_if< is_integral< typename remove_const< typename remove_reference< Size >::type >::type > >::type> {
        // types
        typedef remove_reference< Cont >::type & type;
      };
      template<typename This, typename Cont, typename Size, typename T>
      struct result<This(Cont, Size, T), typename enable_if< is_integral< typename remove_const< typename remove_reference< Size >::type >::type > >::type> {
        // types
        typedef remove_reference< Cont >::type & type;
      };
      template<typename This, typename Cont, typename Value>
      struct result<This(Cont, Value), void> {
        // types
        typedef remove_reference< Cont >::type                                                                                cont_type;
        typedef remove_reference< Value >::type                                                                               value_type;
        typedef char                                                                                                          yes_type;
        typedef char(&                                                                                                        no_type;
        typedef mpl::if_c< is_iterator, typename cont_type::iterator, std::pair< typename cont_type::iterator, bool > >::type type;

        // public static functions
        static yes_type check_insert_return(typename cont_type::iterator);
        static no_type
        check_insert_return(std::pair< typename cont_type::iterator, bool >);

        // public data members
        static cont_type & scont_;
        static value_type & svalue_;
        static bool const is_iterator;
      };

      // public data members
      result< insert(Cont &, A0 const &)>::type operator();  // operator()
      result< insert(Cont &, A0 const &, A1 const &)>::type operator();
      result< insert(Cont &, A0 const &, A1 const &, A2 const &)>::type operator();
    };

## Description

### `insert` public public data members

1.     result< insert(Cont &, A0 const &, A1 const &)>::type operator();

   This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

2.     result< insert(Cont &, A0 const &, A1 const &, A2 const &)>::type operator();

   This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.