Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Click here to view the latest version of this page.
PrevUpHomeNext

Struct insert

boost::xpressive::op::insert

Synopsis

struct insert {
  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< UNCVREF(It)> >::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< UNCVREF(It)>, is_same< UNCVREF(It), UNCVREF(Value)> > >::type> {
  };
  template<typename This, typename Cont, typename Size, typename A0, 
           typename A1> 
  struct result<This(Cont, Size, A0, A1), typename enable_if< is_integral< UNCVREF(Size)> >::type> {

    // public member functions
    typedef UNREF(Cont) ;
  };
  template<typename This, typename Cont, typename Size, typename T> 
  struct result<This(Cont, Size, T), typename enable_if< is_integral< UNCVREF(Size)> >::type> {

    // public member functions
    typedef UNREF(Cont) ;
  };
  template<typename This, typename Cont, typename Value> 
  struct result<This(Cont, Value), void> {
    // types
    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 member functions
    typedef UNREF(Cont) ;
    typedef UNREF(Value) ;
     BOOST_STATIC_CONSTANT(bool, 
                           is_iterator = (sizeof(yes_type)==sizeof(check_insert_return(scont_.insert(svalue_))))) ;

    // 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 >) ;
    static cont_type & scont_;
    static value_type & svalue_;
  };
};

Description


PrevUpHomeNext