Есть ли в любом случае fusion :: for_each() для итерации через a1 и a2 в BOOST_FUSION_ADAPT_ADT или BOOST_FUSION_ADAPT_ASSOC_ADT, как если бы они были адаптированы с использованием BOOST_FUSION_ADAPT_STRUCT?Итерации элементов в BOOST_FUSION_ADAPT_ADT структуре?
class A
{
private:
int a1_;
double a2_;
public:
void set_a1(int v) { a1_ = v; }
int get_a1() const { return a1_; }
void set_a2(double v) { a2_ = v; }
double get_a2() const { return a2_; }
};
BOOST_FUSION_ADAPT_ASSOC_ADT(
A,
(int, int, obj.get_a1(), obj.set_a1(val))
(double, double, obj.get_a2(), obj.set_a2(val))
)
struct Print
{
template <typename T>
void operator()(T& t) const
{
// T is of type adt_attribute_proxy
// cout << ??
// would like to print a1 and a2 value
}
};
int main()
{
A a;
boost::fusion::for_each(a, Print());
}
Спасибо! Я не могу поверить, что ответ такой простой звонок. Я просмотрел эту [ссылку] (http://www.boost.org/doc/libs/1_55_0/libs/fusion/doc/html/fusion/notes.html#fusion.notes.adt_attribute_proxy), но не смог понимаете, что это было. – surfcode
Добро пожаловать :) – sliser
Извините, тогда есть способ получить тип t.get()? Я вижу «proxy_typeN :: type» в документе. Но не могу понять ... – surfcode