|
Boost Users : |
From: Roman Perepelitsa (roman.perepelitsa_at_[hidden])
Date: 2007-07-26 03:18:43
> Joel de Guzman <joel_at_[hidden]> on Thu, 26 Jul 2007 06:59:46
+0800
> > - bind expression with tuple becomes a nightmare
>
> Why? Ah access to the members?
It's a nightmare indeed. I'd say boost::get is not bindable at all.
typedef tuple<int, double> two;
vector<two> src;
vector<int> dst;
// ouch
const int & (*get_first)(const cons<two::head_type,
two::tail_type> &) = get<0>;
transform(src.begin(), src.end(), dst.begin(), get_first);
Would not it be cool to write something like this instead?
transform(src.begin(), src.end(), dst.begin(), get<0>());
And it's not hard to implement it.
namespace boost {
namespace tuples
{
template <int N>
struct getter
{
template <class HT, class TT>
typename access_traits<
typename element<N, cons<HT, TT> >::type
>::non_const_type
operator()(cons<HT, TT> & c) const
{
return get<N>(c);
}
template <class HT, class TT>
typename access_traits<
typename element<N, cons<HT, TT> >::type
>::const_type
operator()(const cons<HT, TT> & c) const
{
return get<N>(c);
}
};
}
template <int N>
tuples::getter<N> get()
{
return tuples::getter<N>();
}
}
Does fusion have something like this?
Regards,
Roman Perepelitsa
Deutsche Bank Moscow
+7 (495) 660-74-08
--- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. Please refer to http://www.db.com/en/content/eu_disclosures.htm for additional EU corporate and regulatory disclosures.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net