Доступные для записи диапазоны почтовых индексов невозможны? - PullRequest
0 голосов
/ 25 февраля 2019

Сбой следующего:

#include <range/v3/view.hpp>
#include <range/v3/view/zip.hpp>
#include <range/v3/utility/iterator.hpp>

// ...

std::vector< std::tuple<int, std::string> > const data{
   {1,"a"},
   {2,"b"},
   {3,"c"}
};
std::vector<int> vi(data.size());
std::vector<std::string> vs(data.size());

using namespace ranges;
copy(data,  view::zip(vi,vs) ); // error

clang говорит:

No matching function for call to object of type 'const 
ranges::v3::with_braced_init_args<ranges::v3::copy_fn>'

Если предположить, что это так, то почему?

И как я могу сделать это очевиднымвещь с диапазонами?

1 Ответ

0 голосов
/ 25 февраля 2019
  1. copy принимает вывод итератор , а не вывод диапазон .Поэтому вам нужно вызвать begin в zip-представлении и превратить его в итератор.
  2. После исправления вы столкнетесь с отдельной проблемой.zip ping двух диапазонов дает pair (ну, common_pair), но, хотя кортежи двух элементов можно назначать из пар, пары нельзя назначать из кортежей двух элементов.В результате мы не можем сделать эквивалент *zip_iterator = *data.begin(), и проверка концепции не удалась.Если вы сделаете data вектором pair с, то это будет работать.
...