sequence.hpp File Reference
#include <atria/xform/reductor.hpp>
#include <atria/xform/meta.hpp>
#include <atria/xform/detail/tuple_utils.hpp>
#include <atria/meta/value_type.hpp>
#include <ableton/build_system/Warnings.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/optional.hpp>
#include <boost/mpl/eval_if.hpp>
#include <vector>
#include <iostream>

Go to the source code of this file.

Classes

struct  sequence_range< ValueT, XformT, RangeTs >
 Range adaptor that transduces the ranges in RangeTs with the transducer XformT, producing values of ValueT. More...
 
struct  sequence_range< ValueT, XformT, RangeTs >::iterator
 

Namespaces

 atria
 C++ amazing templates and reusable implementations awesomeness.
 
 atria::xform
 Efficient and flexible C++ implementation of transducers.
 

Functions

template<typename ValueT = detail::deduce_value_type, typename XformT , typename... RangeTs>
auto sequence (XformT &&xform, const RangeTs &...ranges) -> sequence_range< typename boost::mpl::eval_if< std::is_same< ValueT, detail::deduce_value_type >, result_of< XformT, meta::value_t< RangeTs >... >, meta::identity< ValueT > >::type, estd::decay_t< XformT >, estd::decay_t< RangeTs >... >
 Factory for sequence_range values producing an iterable range out of a transducer, in the spirit of clojure.core/sequence$2. More...
 
Fork me on GitHub