#include #include #include #include #include #include #include #include struct Doctor { std::string nombre_; std::string apellidos_; public: Doctor(const std::string & nombre, const std::string & apellidos) : nombre_(nombre), apellidos_(apellidos) {} }; BOOST_FUSION_ADAPT_STRUCT(Doctor, (std::string, nombre_) (std::string, apellidos_)) using namespace std; int main(int argc, char * argv[]) { namespace phx = boost::phoenix; namespace view = boost::adaptors; using phx::placeholders::_1; vector numeros = {2, 4, 37, 5, 8, 20, 34}; vector doctores = { {"German", "Gallardone"}, {"Pedro", "Ruiz"}, {"Hilario", "Pinose"}, {"Manolito", "Gafotas"}, {"Tomas", "Todonte"} }; auto consulta = numeros | view::filtered(_1 < 10); BOOST_FOREACH (auto i, consulta) { cout << i << endl; } cout << "-----------------------------\n"; auto consulta2 = doctores | view::filtered(phx::at_c<1>(_1) == "Ruiz") | view::transformed(phx::at_c<0>(_1)); BOOST_FOREACH (auto const& s, consulta2) { cout << s << endl; } }