shards  Version of the Day
 All Classes Functions Variables Typedefs Enumerations Enumerator Groups

Compile-time linked-list of types and operations. More...

Classes

class  shards::SameType< T1, T2 >
 Member enum { value = ... }; is true if T1 and T2 are the same type. More...
 
class  shards::TypeList< Value, Tail >
 A link within a linked list of types. More...
 
class  shards::TypeListLength< ListType >
 Member enum { value = ... }; is the length of the type list. More...
 
class  shards::TypeListAt< ListType, ordinal >
 Member typedef ... type ; is the type of the member of ListType at location ordinal if ordinal is less than the type list length. More...
 
class  shards::TypeListIndex< ListType, TestValue, ordinal >
 Member enum { value = ... }; is the location within ListType of occurance I of type TestValue . If this occurance does not exist then value = -1 . More...
 
class  shards::TypeListCount< ListType, TestValue >
 Member enum { value = ... }; is the number of occurances of TestValue within ListType . More...
 
class  shards::TypeListMember< ListType, TestValue >
 Member enum { value = ... }; is true if TestValue is a member of ListType . More...
 
class  shards::TypeListUnique< ListType >
 Member enum { value = ... }; is true if each member of ListType appears exactly once. More...
 
class  shards::TypeListDisjoint< ListA, ListB >
 Member enum { value = ... }; is true if all members of ListA are not a member ListB . More...
 
class  shards::TypeListFirst< ListType >
 Member typedef ... type ; is the first member of ListType . More...
 
class  shards::TypeListLast< ListType >
 Member typedef ... type ; is the last member of ListType . More...
 
class  shards::TypeListAppend< ListA, T >
 Member typedef ... type ; is defined by appending T to the end of ListA . More...
 
class  shards::TypeListJoin< ListA, ListB >
 Member typedef ... type ; is defined by joining ListB to the end of ListA . More...
 
class  shards::TypeListEraseAt< ListType, ordinal >
 Member typedef ... type ; is defined by erasing member at ordinal from ListType . More...
 
class  shards::TypeListClean< ListType >
 Member typedef ... type ; is defined by truncating ListType at the first occurance of TypeListEnd . Used by MakeTypeList to generate a clean type list. More...
 
class  shards::MakeTypeList< T00, T01, T02, T03, T04, T05, T06, T07, T08, T09, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52, T53, T54, T55, T56, T57, T58, T59, T60, T61, T62, T63 >
 Member typedef ... type ; is a type list constructed from the template arguments. More...
 

Detailed Description

Compile-time linked-list of types and operations.

This type list capability was inspired by the type list described in Alexandrescu's "Modern C++ Design" book.

Author
H. Carter Edwards hcedw.nosp@m.ar@s.nosp@m.andia.nosp@m..gov