Added MakeTypelist
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@57 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
41a466c1b2
commit
0fd2f91c64
2 changed files with 59 additions and 6 deletions
|
@ -13,7 +13,8 @@
|
|||
// without express or implied warranty.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Last update: November 22, 2001
|
||||
// Last update: October 10, 2002
|
||||
//Reference
|
||||
|
||||
#ifndef TYPELIST_INC_
|
||||
#define TYPELIST_INC_
|
||||
|
@ -369,6 +370,55 @@ namespace Loki
|
|||
|
||||
namespace TL
|
||||
{
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// class template MakeTypelist
|
||||
// Takes a number of arguments equal to its numeric suffix
|
||||
// The arguments are type names.
|
||||
// MakeTypelist<T1, T2, ...>::Result
|
||||
// returns a typelist that is of T1, T2, ...
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template
|
||||
<
|
||||
typename T1 = NullType, typename T2 = NullType, typename T3 = NullType,
|
||||
typename T4 = NullType, typename T5 = NullType, typename T6 = NullType,
|
||||
typename T7 = NullType, typename T8 = NullType, typename T9 = NullType,
|
||||
typename T10 = NullType, typename T11 = NullType, typename T12 = NullType,
|
||||
typename T13 = NullType, typename T14 = NullType, typename T15 = NullType,
|
||||
typename T16 = NullType, typename T17 = NullType, typename T18 = NullType
|
||||
>
|
||||
struct MakeTypelist
|
||||
{
|
||||
private:
|
||||
typedef typename MakeTypelist
|
||||
<
|
||||
T2 , T3 , T4 ,
|
||||
T5 , T6 , T7 ,
|
||||
T8 , T9 , T10,
|
||||
T11, T12, T13,
|
||||
T14, T15, T16,
|
||||
T17, T18
|
||||
>
|
||||
::Result TailResult;
|
||||
|
||||
public:
|
||||
typedef Typelist<T1, TailResult> Result;
|
||||
};
|
||||
|
||||
template<>
|
||||
struct MakeTypelist
|
||||
<
|
||||
NullType, NullType, NullType,
|
||||
NullType, NullType, NullType,
|
||||
NullType, NullType, NullType,
|
||||
NullType, NullType, NullType,
|
||||
NullType, NullType, NullType,
|
||||
NullType, NullType, NullType
|
||||
>{
|
||||
typedef NullType Result;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// class template Length
|
||||
// Computes the length of a typelist
|
||||
|
@ -752,6 +802,7 @@ namespace Loki
|
|||
// (rather than the SUPERSUBCLASS macro).
|
||||
// Minor fix in Reverse, adding support for empty lists, like all the other
|
||||
// algorithms. T.S.
|
||||
// Oct 10, 2002: added MakeTypelist (SGB/MKH)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#endif // TYPELIST_INC_
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue