Это не работает из коробки:
std::vector<int> a{1,2,3};
std::vector<int> b{2,3,4};
for (auto [f, s] : boost::combine(a, b)) {
std::cout << f << ' ' << s << std::endl;
}
Но этот ответ содержит довольно маленький фрагмент кода C ++, который внезапно заставляет это работать.
namespace std {
template <typename T, typename U>
struct tuple_size<boost::tuples::cons<T, U>>
: boost::tuples::length<boost::tuples::cons<T, U>>
{ };
template <size_t I, typename T, typename U>
struct tuple_element<I, boost::tuples::cons<T, U>>
: boost::tuples::element<I, boost::tuples::cons<T, U>>
{ };
}
Автор, однако, советует не использовать его в производстве.
Может ли этот фрагмент создать sh мой код при любых обстоятельствах, или это просто какая-то организационная причина не использовать этот способ для перебора л oop