Здравствуйте, niXman, Вы писали:
X>та нет, что-то не так...
X>вот компилябельный(сильно упрощенный и не раскрывающий идеи) код(вдруг есть желание покопаться ):
Вот что получилось:
template<template<typename, template<typename> class GC> class...>
struct t_invokers;
template<typename...>
struct t_services;
template<typename Invokers, typename Services>
struct type;
template<template <typename, template<typename> class GC> class... Invokers, typename... Services>
struct type<t_invokers<Invokers...>, t_services<Services...>>
{ };
struct invoker_base {};
/***************************************************************************/
template<typename UC, template<typename> class GC>
struct first_invoker : invoker_base
{
first_invoker(UC &uc, GC<UC> &gc) {}
};
template<typename UC, template<typename> class GC>
struct second_invoker : invoker_base
{
second_invoker(UC &uc, GC<UC> &gc) {}
};
struct ping_service {};
struct statistic_service {};
/***************************************************************************/
int main()
{
using _t_invokers = t_invokers<first_invoker, second_invoker>;
/***************************************************************************/
using _t_services = t_services<ping_service, statistic_service>;
type<_t_invokers, _t_services> t;
}