/*============================================================================= Copyright (c) 2003 Joel de Guzman Copyright (c) 2004 Peder Holt Copyright (c) 2005 Eric Niebler Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_SEQUENCE_CONS_HPP) #define FUSION_SEQUENCE_CONS_HPP #include #include #include #include #include #include #include namespace boost { namespace fusion { struct void_t; struct cons_tag; struct nil : sequence_base { typedef cons_tag tag; typedef void_t car_type; typedef void_t cdr_type; }; template struct cons : sequence_base > { typedef cons_tag tag; typedef typename call_traits::value_type car_type; typedef Cdr cdr_type; cons() : car(), cdr() {} explicit cons( typename call_traits::param_type car_ , typename call_traits::param_type cdr_ = Cdr()) : car(car_), cdr(cdr_) {} car_type car; cdr_type cdr; }; template inline cons make_cons(Car const& car) { return cons(car); } template inline cons make_cons(Car const& car, Cdr const& cdr) { return cons(car, cdr); } }} #endif