The Gaudi Framework  v28r3 (cc1cf868)
Gaudi::Functional::details::insert_t Struct Reference

#include <GaudiAlg/FunctionalDetails.h>

Public Types

template<typename Container >
using c_remove_ptr_t = typename std::remove_pointer< typename Container::value_type >::type
 

Public Member Functions

template<typename Container , typename Value >
auto operator() (Container &c, Value &&v) const -> decltype(c.push_back(v))
 
template<typename Container , typename Value >
auto operator() (Container &c, Value &&v) const -> decltype(c.insert(v))
 
template<typename Container , typename = typename std::enable_if< std::is_pointer<typename Container::value_type>::value >::type>
auto operator() (Container &c, c_remove_ptr_t< Container > &&v) const
 
template<typename Container , typename Value >
void operator() (Container &c, boost::optional< Value > &&v) const
 

Detailed Description

Definition at line 129 of file FunctionalDetails.h.

Member Typedef Documentation

template<typename Container >
using Gaudi::Functional::details::insert_t::c_remove_ptr_t = typename std::remove_pointer<typename Container::value_type>::type

Definition at line 132 of file FunctionalDetails.h.

Member Function Documentation

template<typename Container , typename Value >
auto Gaudi::Functional::details::insert_t::operator() ( Container &  c,
Value &&  v 
) const -> decltype( c.push_back(v) )
inline

Definition at line 135 of file FunctionalDetails.h.

135 { return c.push_back( std::forward<Value>(v) ); }
template<typename Container , typename Value >
auto Gaudi::Functional::details::insert_t::operator() ( Container &  c,
Value &&  v 
) const -> decltype( c.insert(v) )
inline

Definition at line 138 of file FunctionalDetails.h.

138 { return c.insert( std::forward<Value>(v) ); }
template<typename Container , typename = typename std::enable_if< std::is_pointer<typename Container::value_type>::value >::type>
auto Gaudi::Functional::details::insert_t::operator() ( Container &  c,
c_remove_ptr_t< Container > &&  v 
) const
inline

Definition at line 142 of file FunctionalDetails.h.

143  { return operator()( c, new c_remove_ptr_t<Container>{ std::move(v) } ); }
T move(T...args)
auto operator()(Container &c, Value &&v) const -> decltype(c.push_back(v))
template<typename Container , typename Value >
void Gaudi::Functional::details::insert_t::operator() ( Container &  c,
boost::optional< Value > &&  v 
) const
inline

Definition at line 146 of file FunctionalDetails.h.

146 { if (v) operator()(c,std::move(*v)); }
T move(T...args)
auto operator()(Container &c, Value &&v) const -> decltype(c.push_back(v))

The documentation for this struct was generated from the following file: