#ifndef INCLUDED_TYPEAT_H_ #define INCLUDED_TYPEAT_H_ #include "typelist.h" //TYPEAT template struct TypeAt; //= //INVALID template struct TypeAt> { static_assert(index < 0, "TypeAt index out of bounds"); using Type = TypeAt; }; //= //ZERO template struct TypeAt<0, TypeList> { using Type = Head; }; //= //TYPELIST template struct TypeAt> { using Type = typename TypeAt>::Type; }; //= #endif