Skip to content

iris::build::If< D, P, R > Class Template Reference

Doxygen 1.15.0 generates this reference during each site build from the public headers. The C++ guide shows the API in use.

The branch of an if: else_if, else_ and else_read_if continue it, each directly after the branch before. More...

#include <iris/build.hpp>

Public Member Functions

template<class T = R>
requires (!std::is_void_v<T>)
T & result ()
 Return the result of the body of the if.
template<Operand C, class F>
requires std::invocable<F, Scope<D, Presence::Maybe> &>
std::invoke_result_t< F, Scope< D, Presence::Maybe > & > else_if (C &&condition, F &&body, std::source_location site=std::source_location::current())
 else if condition { body }; returns the result of the body
template<class F>
requires std::invocable<F, Scope<D, Presence::Maybe> &>
std::invoke_result_t< F, Scope< D, Presence::Maybe > & > else_ (F &&body, std::source_location site=std::source_location::current())
 else { body }; returns the result of the body
template<class T, TypeLike Ty>
detail::TargetOut< T, TypeValue< Ty >, detail::plus(D, type_dims< Ty >), Presence::Maybe > else_read_if (const T &target, const Ty &type, std::source_location site=std::source_location::current())
 else if:type, a declaration of the name if as the else branch; target must be "if"

Detailed Description

template<std::size_t D, Presence P, class R>
class iris::build::If< D, P, R >

The branch of an if: else_if, else_ and else_read_if continue it, each directly after the branch before.

Template Parameters
Rthe result of the body of the if

Member Function Documentation

else_()

template<std::size_t D, Presence P, class R>
template<class F>
requires std::invocable<F, Scope<D, Presence::Maybe> &>
std::invoke_result_t< F, Scope< D, Presence::Maybe > & > iris::build::If< D, P, R >::else_ ( F && body,
std::source_location site = std::source_location::current() )
inline

else { body }; returns the result of the body

else_if()

template<std::size_t D, Presence P, class R>
template<Operand C, class F>
requires std::invocable<F, Scope<D, Presence::Maybe> &>
std::invoke_result_t< F, Scope< D, Presence::Maybe > & > iris::build::If< D, P, R >::else_if ( C && condition,
F && body,
std::source_location site = std::source_location::current() )
inline

else if condition { body }; returns the result of the body

else_read_if()

template<std::size_t D, Presence P, class R>
template<class T, TypeLike Ty>
detail::TargetOut< T, TypeValue< Ty >, detail::plus(D, type_dims< Ty >), Presence::Maybe > iris::build::If< D, P, R >::else_read_if ( const T & target,
const Ty & type,
std::source_location site = std::source_location::current() )
inline

else if:type, a declaration of the name if as the else branch; target must be "if"

result()

template<std::size_t D, Presence P, class R>
template<class T = R>
requires (!std::is_void_v<T>)
T & iris::build::If< D, P, R >::result ( )
inlinenodiscard

Return the result of the body of the if.