Проблема заключается в том что надо написать довольно много манипуляторов с аргументами, как можно это сделать с меньшими усилиями?
Самый короткий способ который мне удолось придумать выглядит примерно так:
template<class T1, class T2, class T3, class T4>
struct manip4_type {
typedef boost::_bi::bind_t<StreamType&, StreamType&(*)(StreamType&, T1, T2, T3, T4),
boost::_bi::list5<boost::arg<1>,
boost::_bi::value<T1>,
boost::_bi::value<T2>,
boost::_bi::value<T3>,
boost::_bi::value<T4>
> >
type;
};
inline StreamType& new_manip_func(StreamType &stream, T1 t1, T2 t2, T3 t3) {
stream.new_manip(t1, t2, t3, t4); return stream;
}
inline manip4_type<T1, T2, T3, T4>::type new_manip(T1 t1, T2 t2, T3 t3) {
return boost::bind(new_manip_func, _1, t1, t2, t3, t4);
}
manip[1,2,3,4,5,6]_type нужен для определения возвращаемого типа, другого способа опредилить тип bind'а я придумать не смог.
Заранее спасибо.