/*============================================================================= Copyright (c) 2005 Joel de Guzman Distributed under 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_LIST_07172005_1153) #define FUSION_LIST_07172005_1153 #include #include namespace boost { namespace fusion { struct nil; struct void_; template struct list : detail::list_to_cons::type { private: typedef detail::list_to_cons list_to_cons; public: typedef typename list_to_cons::type inherited_type; list() : inherited_type() {} template list(list const& rhs) : inherited_type(rhs) {} template list(Sequence const& rhs) : inherited_type(rhs) {} // Expand a couple of forwarding constructors for arguments // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: // // list( // typename detail::call_param::type _0 // , typename detail::call_param::type _1) // : inherited_type(list_to_cons::call(_0, _1)) {} #include template list& operator=(list const& rhs) { inherited_type::operator=(rhs); return *this; } template list& operator=(T const& rhs) { inherited_type::operator=(rhs); return *this; } }; }} #endif