you could also pass whole vector:
tg.create_thread( boost::bind( &task4_5::solution::take_extreme, this, boost::ref( *data_it ) ) );
take_extreme( const std::vector< int >& data  )