Header file types/inherit_linearly.hpp

namespace brigand
{
    namespace lazy
    {
        template <typename Types, template <typename> class Node, typename ... Ts, typename Root>
        struct inherit_linearly<Types, Node<Ts...>, Root>
        {
            using type = brigand::fold<Types, Root, bind<Node, Ts...>>;
        };
    }
    
    template <typename Types, typename Node, typename Root = brigand::empty_base>
    using inherit_linearly = typename lazy::inherit_linearly<Types, Node, Root>::type;
}