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

Сообщение wrong number of template arguments от 15.06.2015 5:36

Изменено 15.06.2015 5:43 makdak

Всем привет!
подскажите как можно сделать что-то подобное на это:

struct for_reciver_1 {int data;};
struct for_reciver_2 {int data; int error_code;};


template<class VALUE>
struct reciver_t
{
    std::map<int, VALUE> m;

    void add_data(int data)
    {
        m.insert(std::make_pair(data, VALUE()));
    }
};


struct sender_t
{
    std::map<reciver_t*, int> m;

    void add_recv(reciver_t *r, int i)
    {
        m.insert(std::make_pair(r,i));
    }

    void update_recv_list()
    {
        // функция перевыполняясь в отдельном потоке, периодически отправляет reciver'ам данные
        while (true)
            for (auto &it : m) 
                it.first->add_data(it.second);
    }
};


int main()
{
    sender_t sender;

    reciver_t<for_reciver_1> reciver_1;
    reciver_t<for_reciver_2> reciver_2;

    sender.add_recv(&reciver_1, 1);
    sender.add_recv(&reciver_2, 2);

    sender.update_recv_list();
}



но чтобы работало?
Всем привет!
подскажите как можно сделать что-то подобное на это:

struct for_reciver_1 {int data;};
struct for_reciver_2 {int data; int error_code;};


template<class VALUE>
struct reciver_t
{
    std::map<int, VALUE> m;

    void add_data(int data)
    {
        m.insert(std::make_pair(data, VALUE()));
    }
};


struct sender_t
{
    std::map<reciver_t*, int> m;

    void add_recv(reciver_t *r, int i)
    {
        m.insert(std::make_pair(r,i));
    }

    void update_recv_list()
    {
        // функция перевыполняясь в отдельном потоке, периодически отправляет reciver'ам данные
        while (true)
            for (auto &it : m) 
                it.first->add_data(it.second);
    }
};


int main()
{
    sender_t sender;

    reciver_t<for_reciver_1> reciver_1;
    reciver_t<for_reciver_2> reciver_2;

    sender.add_recv(&reciver_1, 1);
    sender.add_recv(&reciver_2, 2);

    sender.update_recv_list();
}



но чтобы работало?
c++14 приветствуется