/*================================================================================================== Copyright (c) 2015 Edouard Alligand and Joel Falcou Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) =================================================================================================**/ #ifndef BRIGAND_HPP_INCLUDED #define BRIGAND_HPP_INCLUDED #ifndef BRIGAND_NO_BOOST_SUPPORT #define BRIGAND_NO_BOOST_SUPPORT #endif #include #include namespace brigand { template struct list {}; template using integral_list = brigand::list< std::integral_constant...>; using empty_sequence = brigand::list<>; } namespace brigand { namespace lazy { template class B> struct wrap; template class A, class... T, template class B> struct wrap, B> { using type = B; }; } template class B> using wrap = typename lazy::wrap::type; } namespace brigand { namespace detail { template struct append_impl { using type = brigand::empty_sequence; }; template struct append_impl { using type = T; }; template