roar
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
flexible_provider.hpp File Reference
#include <roar/utility/overloaded.hpp>
#include <variant>
#include <functional>
#include <type_traits>
#include <optional>
Include dependency graph for flexible_provider.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Roar::Detail::MakeVariantFromRetrievers< Optional, Retrievers >
 
struct  Roar::Detail::MakeVariantFromRetrievers< true, Retrievers... >
 
struct  Roar::FlexibleProviderUnwrapper< HolderClassT, T, Optional >
 
struct  Roar::FlexibleProviderUnwrapper< HolderClassT, T, false >
 

Namespaces

namespace  Roar
 
namespace  Roar::Detail
 

Typedefs

template<bool Optional, typename... Retrievers>
using Roar::Detail::MakeVariantFromRetrievers_v = typename MakeVariantFromRetrievers< Optional, Retrievers... >::type
 
template<typename HolderClassT , typename T , bool Optional = false>
using Roar::FlexibleProvider = Detail::MakeVariantFromRetrievers_v< Optional, std::function< T(HolderClassT &)>, std::function< T const &(HolderClassT &)>, T const &(HolderClassT::*)(), T const &(HolderClassT::*)() const, T(HolderClassT::*)(), T(HolderClassT::*)() const, T HolderClassT::*, T >
 

Functions

template<typename HolderClassT , typename T >
std::optional< T > Roar::unwrapFlexibleProvider (HolderClassT &holder, FlexibleProvider< HolderClassT, T, true > const &flexibleProvider)
 
template<typename HolderClassT , typename T >
Roar::unwrapFlexibleProvider (HolderClassT &holder, FlexibleProvider< HolderClassT, T, false > const &flexibleProvider)