Iros
 
Loading...
Searching...
No Matches
di::function::detail::ChainFunction< F, G > Class Template Reference

#include <di/function/chain.h>

Inheritance diagram for di::function::detail::ChainFunction< F, G >:
[legend]

Public Member Functions

template<typename Fn, typename Gn>
constexpr ChainFunction (Fn &&f, Gn &&g)
 
constexpr ChainFunction (ChainFunction const &)=default
 
constexpr ChainFunction (ChainFunction &&)=default
 
constexpr auto operator= (ChainFunction const &) -> ChainFunction &=delete
 
constexpr auto operator= (ChainFunction &&) -> ChainFunction &=delete
 
template<typename... Args>
requires (concepts::Invocable<F&, Args...> && concepts::Invocable<G&, meta::InvokeResult<F&, Args...>>)
constexpr auto operator() (Args &&... args) &-> decltype(auto)
 
template<typename... Args>
requires (concepts::Invocable<F const&, Args...> && concepts::Invocable<G const&, meta::InvokeResult<F const&, Args...>>)
constexpr auto operator() (Args &&... args) const &-> decltype(auto)
 
template<typename... Args>
requires (concepts::Invocable<F &&, Args...> && concepts::Invocable<G &&, meta::InvokeResult<F &&, Args...>>)
constexpr auto operator() (Args &&... args) &&-> decltype(auto)
 
template<typename... Args>
requires (concepts::Invocable<F const &&, Args...> && concepts::Invocable<G const &&, meta::InvokeResult<F const &&, Args...>>)
constexpr auto operator() (Args &&... args) const &&-> decltype(auto)
 

Constructor & Destructor Documentation

◆ ChainFunction() [1/3]

template<typename F, typename G>
template<typename Fn, typename Gn>
di::function::detail::ChainFunction< F, G >::ChainFunction ( Fn && f,
Gn && g )
inlineexplicitconstexpr

◆ ChainFunction() [2/3]

template<typename F, typename G>
di::function::detail::ChainFunction< F, G >::ChainFunction ( ChainFunction< F, G > const & )
constexprdefault

◆ ChainFunction() [3/3]

template<typename F, typename G>
di::function::detail::ChainFunction< F, G >::ChainFunction ( ChainFunction< F, G > && )
constexprdefault

Member Function Documentation

◆ operator()() [1/4]

template<typename F, typename G>
template<typename... Args>
requires (concepts::Invocable<F &&, Args...> && concepts::Invocable<G &&, meta::InvokeResult<F &&, Args...>>)
auto di::function::detail::ChainFunction< F, G >::operator() ( Args &&... args) && -> decltype(auto)
inlineconstexpr

◆ operator()() [2/4]

template<typename F, typename G>
template<typename... Args>
requires (concepts::Invocable<F&, Args...> && concepts::Invocable<G&, meta::InvokeResult<F&, Args...>>)
auto di::function::detail::ChainFunction< F, G >::operator() ( Args &&... args) & -> decltype(auto)
inlineconstexpr

◆ operator()() [3/4]

template<typename F, typename G>
template<typename... Args>
requires (concepts::Invocable<F const &&, Args...> && concepts::Invocable<G const &&, meta::InvokeResult<F const &&, Args...>>)
auto di::function::detail::ChainFunction< F, G >::operator() ( Args &&... args) const && -> decltype(auto)
inlineconstexpr

◆ operator()() [4/4]

template<typename F, typename G>
template<typename... Args>
requires (concepts::Invocable<F const&, Args...> && concepts::Invocable<G const&, meta::InvokeResult<F const&, Args...>>)
auto di::function::detail::ChainFunction< F, G >::operator() ( Args &&... args) const & -> decltype(auto)
inlineconstexpr

◆ operator=() [1/2]

template<typename F, typename G>
auto di::function::detail::ChainFunction< F, G >::operator= ( ChainFunction< F, G > && ) -> ChainFunction &=delete
constexprdelete

◆ operator=() [2/2]

template<typename F, typename G>
auto di::function::detail::ChainFunction< F, G >::operator= ( ChainFunction< F, G > const & ) -> ChainFunction &=delete
constexprdelete

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