Joel de Guzman 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 two;
vector<two> src;
vector<int> dst;
// ouch
const int & (*get_first)(const cons &) = 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
typename access_traits<
typename element >::type
>::non_const_type
operator()(cons & c) const
{
return get<N>(c);
}
template
typename access_traits<
typename element >::type
>::const_type
operator()(const cons & 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.