#ifndef TYPEASVALUE_SRC_CONDITIONAL_COND_H_ #define TYPEASVALUE_SRC_CONDITIONAL_COND_H_ #include "type.h" #include "list/cons.h" #include "list/detail/find_variadic.h" namespace tav { namespace detail { template using cond_predicate = IsTrue>; template struct select_cond_branch { using type = Eval>; static_assert( IsPair::value, "all branch conditions resolve to false" ); }; } template using Cond = Cdr>>; template < typename Condition, typename Result > using Branch = Pair; template using Else = Branch, Result>; } #endif // TYPEASVALUE_SRC_CONDITIONAL_COND_H_