All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Namespaces | Typedefs | Functions
ContainerMeta.h File Reference

C++ metaprogramming utilities for dealing with containers. More...

#include "larcorealg/CoreUtils/MetaUtils.h"
#include <iterator>
#include <functional>
#include <memory>
#include <utility>
#include <type_traits>

Go to the source code of this file.

Classes

struct  util::collection_value_type< Coll >
 Trait of value contained in the template collection Coll. More...
 
struct  util::collection_value_access_type< Coll >
 Trait of type obtained by access to element of collection Coll. More...
 
struct  util::collection_value_constant_access_type< Coll >
 Trait of type obtained by constant access to element of collection Coll. More...
 
struct  util::collection_reference_type< Coll >
 Trait of a type that can be used to reference the collection Coll. More...
 
struct  util::collection_from_reference_type< Cont >
 Trait with the type of collection referenced by collRef. More...
 
struct  util::details::collection_value_type_impl_pointer< Ptr >
 
struct  util::details::collection_value_type_impl_pointer< T * >
 
struct  util::details::collection_value_type_impl_pointer< T[]>
 
struct  util::details::collection_value_type_impl_pointer< T[N]>
 
struct  util::details::collection_value_type_impl_unique_ptr< Ptr, typename >
 
struct  util::details::collection_value_type_impl< Coll, typename >
 
struct  util::details::collection_value_type_impl< Coll, std::enable_if_t< std::is_pointer_v< std::decay_t< Coll > > > >
 
struct  util::details::collection_value_type_impl< Coll, std::enable_if_t< util::is_unique_ptr_v< std::decay_t< Coll > > > >
 
struct  util::details::collection_value_access_type_impl< Coll, typename >
 
struct  util::details::collection_value_access_type_impl< T *, void >
 
struct  util::details::collection_value_access_type_impl< Ptr, std::enable_if_t< util::is_unique_ptr_v< std::decay_t< Ptr > > > >
 
struct  util::details::collection_value_constant_access_type_impl< Coll, typename >
 
struct  util::details::collection_value_constant_access_type_impl< T *, void >
 
struct  util::details::collection_value_constant_access_type_impl< Ptr, std::enable_if_t< util::is_unique_ptr_v< std::decay_t< Ptr > > > >
 
struct  util::details::make_collection_reference_impl< Coll, typename >
 
struct  util::details::make_collection_reference_impl< Coll, std::enable_if_t< util::is_reference_wrapper_v< Coll > > >
 
struct  util::details::make_collection_reference_impl< Coll, std::enable_if_t< util::is_unique_ptr_v< Coll > > >
 
struct  util::details::make_collection_reference_impl< Ptr, std::enable_if_t< std::is_pointer_v< std::decay_t< Ptr > > > >
 
struct  util::details::collection_from_reference_impl< CollRef, typename >
 
struct  util::details::collection_from_reference_impl< CollRef, std::enable_if_t< util::is_reference_wrapper_v< CollRef > > >
 
struct  util::details::collection_from_reference_impl< CollRef, std::enable_if_t< util::is_unique_ptr_v< CollRef > > >
 
struct  util::details::collection_from_reference_impl< T * >
 
struct  util::details::collection_from_reference_impl< T[]>
 
struct  util::details::collection_from_reference_impl< T[N]>
 
struct  util::collection_value_type< Coll >
 Trait of value contained in the template collection Coll. More...
 
struct  util::collection_value_access_type< Coll >
 Trait of type obtained by access to element of collection Coll. More...
 
struct  util::collection_value_constant_access_type< Coll >
 Trait of type obtained by constant access to element of collection Coll. More...
 
struct  util::collection_reference_type< Coll >
 Trait of a type that can be used to reference the collection Coll. More...
 
struct  util::collection_from_reference_type< Cont >
 Trait with the type of collection referenced by collRef. More...
 

Namespaces

 util
 Namespace for general, non-LArSoft-specific utilities.
 
 util::details
 

Typedefs

template<typename Coll >
using util::collection_value_t = typename collection_value_type< Coll >::type
 Type contained in the collection Coll. More...
 
template<typename Coll >
using util::collection_value_access_t = typename collection_value_access_type< Coll >::type
 Type obtained by constant access to element of collection Coll. More...
 
template<typename Coll >
using util::collection_value_constant_access_t = typename collection_value_constant_access_type< Coll >::type
 Type obtained by constant access to element of collection Coll. More...
 
template<typename Coll >
using util::collection_reference_t = typename collection_reference_type< Coll >::type
 The type contained in util::collection_reference_type trait. More...
 
template<typename Cont >
using util::collection_from_reference_t = typename collection_from_reference_type< Cont >::type
 Type contained in util::collection_from_reference_type trait. More...
 

Functions

template<typename Coll >
auto util::make_collection_reference (Coll &&coll)
 Returns an object referencing to the data contained in coll. More...
 
template<typename CollRef >
decltype(auto) util::collection_from_reference (CollRef &collRef)
 Returns the object referenced by collRef as a C++ reference. More...
 

Detailed Description

C++ metaprogramming utilities for dealing with containers.


Author
Gianluca Petrillo (petri.nosp@m.llo@.nosp@m.fnal..nosp@m.gov)
Date
July 27, 2017

Definition in file ContainerMeta.h.