Re[2]: Вызов функций по спискам типов
От: AlexTrump  
Дата: 26.11.09 19:09
Оценка:
К>Да, смотри boost/mpl.

Ну вот,опять без великого и ужасного не обойтись
Я вот так сделал
#include <iostream>  
#include "loki/Typelist.h"

typedef LOKI_TYPELIST_3(char,int,double) List1;
typedef LOKI_TYPELIST_2(short,float) List2;


template <typename A,typename B>
void func()
{
 std::cout << typeid(A).name() << " " << typeid(B).name() << std::endl;
}

template <typename A,typename ListB>
struct OneToMany
{
 static void f()
 {
  func<A,ListB::Head>();
  OneToMany<A,ListB::Tail>::f();
 }
};

template<typename A>
struct OneToMany<A,Loki::NullType>
{
 static void f() {}
};

template <typename ListA,typename ListB>
struct ManyToMany
{
 static void f()
 {
  OneToMany<ListA::Head,ListB>::f();
  ManyToMany<ListA::Tail,ListB>::f();
 }
}; 

template<typename B>
struct ManyToMany<Loki::NullType,B>
{
 static void f(){}
};

void main()
{
 ManyToMany<List2,List1>::f();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.