Йоханнес объяснил, что не так.
Это то, что вы могли бы сделать.
1) Я не вижу необходимости в том, чтобы это была структура, следовательно, свободная функция (делайте так, как вам удобно).
2) Тип n-го элемента можно запросить из кортежа с помощью boost::tuples::element
(а тип кортежа можно запросить из контейнера с помощью value_type
typedef - нет необходимости в параметре R.
#include <boost/tuple/tuple.hpp>
#include <vector>
template <int N, class TupleContainer>
std::vector<typename boost::tuples::element<N, typename TupleContainer::value_type>::type>
copy_tuple_column(const TupleContainer& c)
{
std::vector<typename boost::tuples::element<N, typename TupleContainer::value_type>::type> results;
for (typename TupleContainer::const_iterator it = c.begin(); it != c.end(); ++it) {
results.push_back(boost::tuples::get<N>(*it));
}
return results;
}
int main()
{
std::vector<boost::tuple<int, double> > tuples;
std::vector<int> ints = copy_tuple_column<0>(tuples);
std::vector<double> doubles = copy_tuple_column<1>(tuples);
}