#ifndef TYPEASVALUE_SRC_LIST_CONS_H_ #define TYPEASVALUE_SRC_LIST_CONS_H_ #include "pair.h" namespace tav { namespace detail { template struct Car { static_assert( IsPair::value, "Pair type required" ); typedef typename Pair::car type; }; template struct Cdr { static_assert( IsPair::value, "Pair type required" ); typedef typename Pair::cdr type; }; } template < typename CAR, typename CDR > using Cons = Pair; template using Car = Eval>; template using Cdr = Eval>; } #endif // TYPEASVALUE_SRC_LIST_CONS_H_