Re[4]: Использовать тип параметра функции в предке
От: szag  
Дата: 29.12.15 12:22
Оценка:
Здравствуйте, Warturtle, Вы писали:


W>Значит надо уточнить почему не годится. Так не вполне ясно, чего ты хочешь. Зачем там обязательно наследование от foo<bar>? Например без него все и сейчас функционирует:


template<class T>
class foo
{
public:

    typedef typename BOOST_TYPEOF(&T::f) f_type; // сейчас этот тип захардкожен, поэтому все работает, но хочется гибкости
    typedef typename boost::function_types::parameter_types<f_type> parameter_types;
    typedef typename boost::mpl::at_c< parameter_types, 1>::type vec_type;

    void dispatch() // вызывает сам класс foo когда ему это надо
    {
        auto v = vec[0]; // псевдокод получения значения из вектора
        static_cast<T*>(this)->f(v);
    }

    void push(const vec_type& v)
    {
        vec.emplace_back(v);
    }

    std::vector<vec_type> vec;
};

class bar : public foo<bar> // таких классов по коду очень много, не хотелось бы их менять
{
public:
    void f (int i){} // обработка значений
};
Отредактировано 29.12.2015 12:22 szag . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.