#ifndef EOLIAN_CXX_CONTEXT_HH #define EOLIAN_CXX_CONTEXT_HH namespace efl { namespace eolian { namespace grammar { struct context_null {}; template struct context_cons { Tag tag; Tail const& tail; }; template struct context_cons { Tag tag; context_null tail; }; template context_cons> context_add_tag(NewTag tag, context_cons const& context) { return context_cons>{tag, context}; } template context_cons context_add_tag(NewTag tag, context_null context) { return context_cons{tag, context}; } template struct tag_check; template struct tag_check> : std::true_type {}; template struct tag_check : std::false_type {}; template struct tag_check> : tag_check {}; } } } #endif