Несколько проблем здесь:
eth_array
не определено, я предполагаю, что должно быть _array.
v+= ( boost::make_tuple( 10,23.4) )( boost::make_tuple( 12,24.4) );
Здесь вы пытаетесь вызвать кортеж как функцию? Может быть, вы пробовали что-то вроде:
v+=boost::make_tuple( 10,23.4);
v+=boost::make_tuple( 12,24.4);
Наконец, что, кажется, вызывает проблему, которую вы описали:
boost::bind( eth_array::get<0>, _1 )
Вы должны попытаться использовать указатель функции вместо необработанного имени функции:
boost::bind( ð_array::get<0>, _1 )
Полное тело main (), которое я должен скомпилировать и запустить:
int main( int argc, const char** argv ){
using namespace boost::assign;
typedef boost::tuple< int, double > _array;
std::vector< _array > v;
v+=boost::make_tuple( 10,23.4);
v+=boost::make_tuple( 12,24.4);
std::for_each( v.begin()
, v.end()
, boost::bind<int>(
printf
, "%d-%f\n"
, boost::bind( &_array::get<0>, _1 )
, boost::bind( &_array::get<1>, _1 )
)
);
}