Информация об изменениях

Сообщение Re[3]: variadic list неспециализированных шаблонов от 20.09.2014 22:30

Изменено 20.09.2014 22:32 wander

Здравствуйте, niXman, Вы писали:

X>если таки не получится разобраться — выложу компилябильный код. просто прототипирую некоторую архитектуру, о которой скоро на хабре будет статья, потому и не хочу "раскрывать всех карт"


Может я конечно опять не так понял (плоховато уже соображаю), но вот так не пойдет?

template<template<typename> class ...>
struct invokers;
template<typename...>
struct services;

template<
     typename UC
    ,template<typename> class GC
    ,typename Invokers
    ,typename Services
>
struct server;

template<
     typename UC
    ,template<typename> class GC
    ,template<typename> class... Invokers
    ,typename... Services
>
struct server<UC, GC, invokers<Invokers...>, services<Services...>> {
    server(GC<UC> &gc)
        :gc(gc)
    {}
>    void start() {
        auto ptr = std::make_shared<session<invokers<Invokers...>, services<Services...>>>();
                ptr->invoke(1, "my string");
    }

private:
    GC<UC> &gc;
};
Re[3]: variadic list неспециализированных шаблонов
Здравствуйте, niXman, Вы писали:

X>если таки не получится разобраться — выложу компилябильный код. просто прототипирую некоторую архитектуру, о которой скоро на хабре будет статья, потому и не хочу "раскрывать всех карт"


Может я конечно опять не так понял (плоховато уже соображаю), но вот так не пойдет?

template<template<typename> class ...>
struct invokers;
template<typename...>
struct services;

template<
     typename UC
    ,template<typename> class GC
    ,typename Invokers
    ,typename Services
>
struct server;

template<
     typename UC
    ,template<typename> class GC
    ,template<typename> class... Invokers
    ,typename... Services
>
struct server<UC, GC, invokers<Invokers...>, services<Services...>> {
    server(GC<UC> &gc)
        :gc(gc)
    {}
    void start() {
        auto ptr = std::make_shared<session<invokers<Invokers...>, services<Services...>>>();
                ptr->invoke(1, "my string");
    }

private:
    GC<UC> &gc;
};