iffl  1.3.4
Implements Intrusive Flat Forward List container
Namespaces | Classes | Typedefs | Variables
iffl::mpl Namespace Reference

intrusive flat forward list More...

Namespaces

 details
 intrusive flat forward list meta-programing helpers library internal types
 

Classes

class  nonesuch
 A valid type that cannot be instantiate. Used by some detector meta-functions as a default type. More...
 

Typedefs

template<typename... Whatever>
using void_t = std::void_t< Whatever ... >
 Type that can take any number of template parameters and returns void. It is used by detector meta-function SFINAE.
 
template<template< typename... > typename Operation, typename... Arguments>
using is_detected = typename details::detector< nonesuch, void, Operation, Arguments... >::value_type
 is_detected will be either true_type or false_type, depending if Operation<Arguments...> meta-function is well formed More...
 
template<template< typename... > typename Operation, typename... Arguments>
using is_detected_t = is_detected< Operation, Arguments... >
 alias for is_detected More...
 
template<template< typename... > typename Operation, typename... Arguments>
using detected_t = typename details::detector< nonesuch, void, Operation, Arguments... >::type
 is_detected will be either true_type or false_type, depending if Operation<Arguments...> meta-function is well formed More...
 
template<typename Default , template< typename... > typename Operation, typename... Arguments>
using detected_or = details::detector< Default, void, Operation, Arguments... >
 type of detector Operation<Arguments...> if it is well formed, and otherwise Default type More...
 
template<typename Default , template< typename... > typename Operation, typename... Arguments>
using detected_or_t = typename detected_or< Default, Operation, Arguments... >::type
 Extracts and return detector<...>::type of detected_or. More...
 
template<typename ExpectedType , template< typename... > typename Operation, typename... Arguments>
using is_detected_exact = std::is_same< ExpectedType, detected_t< Operation, Arguments... > >
 returns std::true_type when result of meta-function detected_t is the same as ExpectedType More...
 
template<typename ConvertibleToType , template< typename... > typename Operation, typename... Arguments>
using is_detected_convertible = std::is_convertible< detected_t< Operation, Arguments... >, ConvertibleToType >
 returns std::true_type when result of meta-function detected_t is the convertible to ConvertibleToType More...
 

Variables

template<template< typename... > typename Operation, typename... Arguments>
constexpr auto const is_detected_v { is_detected<Operation, Arguments...>{} }
 Instance of is_detected meta-function output. More...
 
template<template< typename... > typename Operation, typename... Arguments>
constexpr auto const detected_v { detected_t<Operation, Arguments...>{} }
 Instance of detected_t meta-function output. More...
 
template<typename Default , template< typename... > typename Operation, typename... Arguments>
constexpr auto const detected_or_v { typename detected_or<Default, Operation, Arguments...>::type{} }
 instance of detector<...>::type of detected_or More...
 
template<typename ExpectedType , template< typename... > typename Operation, typename... Arguments>
constexpr auto const is_detected_exact_v { is_detected_exact<ExpectedType, Operation, Arguments...>{} }
 instance of is_detected_exact<...>::value More...
 
template<typename ConvertibleToType , template< typename... > typename Operation, typename... Arguments>
constexpr auto const is_detected_convertible_v { is_detected_convertible<ConvertibleToType, Operation, Arguments...>{} }
 instance of the is_detected_convertible More...
 

Detailed Description

intrusive flat forward list

intrusive flat forward list meta-programing helpers library

Typedef Documentation

◆ detected_or

template<typename Default , template< typename... > typename Operation, typename... Arguments>
iffl::mpl::detected_or

type of detector Operation<Arguments...> if it is well formed, and otherwise Default type

Template Parameters
Default- type to return if Operation<Arguments...> is not well formed
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns type of detector for meta-function Operation<Arguments...> if this expression is well formed, otherwise it returns detector with Default

◆ detected_or_t

template<typename Default , template< typename... > typename Operation, typename... Arguments>
iffl::mpl::detected_or_t

Extracts and return detector<...>::type of detected_or.

Template Parameters
Default- type to return if Operation<Arguments...> is not well formed
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns type of meta-function Operation<Arguments...> if this expression is well formed, otherwise it returns Default

◆ detected_t

template<template< typename... > typename Operation, typename... Arguments>
iffl::mpl::detected_t

is_detected will be either true_type or false_type, depending if Operation<Arguments...> meta-function is well formed

Template Parameters
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns detected_t will be either nonesuch or result of meta-function Operation<Arguments...>, depending if Operation<Arguments...> meta-function is well formed

◆ is_detected

template<template< typename... > typename Operation, typename... Arguments>
iffl::mpl::is_detected

is_detected will be either true_type or false_type, depending if Operation<Arguments...> meta-function is well formed

Template Parameters
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns std::true_type is Operation<Arguments...> is well formed std::false_type otherwise

◆ is_detected_convertible

template<typename ConvertibleToType , template< typename... > typename Operation, typename... Arguments>
iffl::mpl::is_detected_convertible

returns std::true_type when result of meta-function detected_t is the convertible to ConvertibleToType

Template Parameters
ConvertibleToType- type that we will should attempt to convert result of detected_t to.
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns std::true_type if result of meta-function detected_t is convertible to ConvertibleToType, and std::false_type otherwise

◆ is_detected_exact

template<typename ExpectedType , template< typename... > typename Operation, typename... Arguments>
iffl::mpl::is_detected_exact

returns std::true_type when result of meta-function detected_t is the same as ExpectedType

Template Parameters
ExpectedType- type that we will compare result of detected_t to
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns std::true_type if result of meta-function ExpectedType is the same as ExpectedType, and std::false_type otherwise

◆ is_detected_t

template<template< typename... > typename Operation, typename... Arguments>
iffl::mpl::is_detected_t

alias for is_detected

Technically we do not need this because is_detected already returns value_type, but we will define it anyways in case if folks expect this name

Template Parameters
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns std::true_type is Operation<Arguments...> is well formed std::false_type otherwise

Variable Documentation

◆ detected_or_v

template<typename Default , template< typename... > typename Operation, typename... Arguments>
constexpr auto const iffl::mpl::detected_or_v { typename detected_or<Default, Operation, Arguments...>::type{} }

instance of detector<...>::type of detected_or

Template Parameters
Default- type to return if Operation<Arguments...> is not well formed
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter

◆ detected_v

template<template< typename... > typename Operation, typename... Arguments>
constexpr auto const iffl::mpl::detected_v { detected_t<Operation, Arguments...>{} }

Instance of detected_t meta-function output.

Template Parameters
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Result of meta-function Operation<Arguments...> if Operation<Arguments...> meta-function is well formed otherwise ill-formed because meta-function returns nonesuch, which cannot be instantiated

◆ is_detected_convertible_v

template<typename ConvertibleToType , template< typename... > typename Operation, typename... Arguments>
constexpr auto const iffl::mpl::is_detected_convertible_v { is_detected_convertible<ConvertibleToType, Operation, Arguments...>{} }

instance of the is_detected_convertible

Template Parameters
ConvertibleToType- type that we will should attempt to convert result of detected_t to.
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter

◆ is_detected_exact_v

template<typename ExpectedType , template< typename... > typename Operation, typename... Arguments>
constexpr auto const iffl::mpl::is_detected_exact_v { is_detected_exact<ExpectedType, Operation, Arguments...>{} }

instance of is_detected_exact<...>::value

Template Parameters
ExpectedType- type that we will compare result of detected_t to
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter

◆ is_detected_v

template<template< typename... > typename Operation, typename... Arguments>
constexpr auto const iffl::mpl::is_detected_v { is_detected<Operation, Arguments...>{} }

Instance of is_detected meta-function output.

Template Parameters
Operation- meta-function that we will validate for being well formed given the Arguments
Arguments- template arguments that will be used to instantiate meta-function Operation that is a template template parameter
Returns
Returns std::true_type{} is Operation<Arguments...> is well formed std::false_type{} otherwise