CGAL 5.6 - STL Extensions for CGAL
Loading...
Searching...
No Matches
CGAL::Dispatch_or_drop_output_iterator< V, O > Class Template Reference

#include <CGAL/iterator.h>

Inherits from

O.

Definition

template<typename V, typename O>
class CGAL::Dispatch_or_drop_output_iterator< V, O >

The class Dispatch_or_drop_output_iterator defines an OutputIterator that contains a tuple of output iterators, and dispatches among those based on the type of the value type which is put in it.

Besides defining assignment for all parameters of V and for a tuple of type V, it is also defined for the types boost::variant<T...> and boost::optional<boost::variant<T...> >, where T... must be a subset of the parameters of V. Should the boost::optional be empty, it will be discarded.

Parameters

Template Parameters
Vmust be a std::tuple<...> of the types of values to be accepted and dispatched.
Omust be a std::tuple<...> of the types of corresponding output iterators.
Is Model Of:
OutputIterator


File STL_Extension/Dispatch_output_iterator.cpp

#include <vector>
#include <CGAL/iterator.h>
#include <boost/variant.hpp>
#include <boost/optional.hpp>
int main()
{
std::vector<int> a;
std::vector<double> b;
std::vector<char> c;
std::tuple<int, double, char>,
std::tuple<std::back_insert_iterator< std::vector<int> >,
std::back_insert_iterator< std::vector<double> >,
std::back_insert_iterator< std::vector<char> >
> > Dispatch;
Dispatch disp = CGAL::dispatch_output<int, double, char>(
std::back_inserter(a),
std::back_inserter(b),
std::back_inserter(c));
typedef boost::variant<int, double, char> var;
var va = 23; var vb = 4.2; var vc = 'x';
// goes to a
*disp++ = va;
// goes to b
*disp++ = vb;
// goes to c
*disp++ = vc;
// goes to a
*disp++ = 42;
return 0;
}
The class Dispatch_output_iterator defines an OutputIterator that contains a tuple of output iterator...
Definition: iterator.h:214
See also
CGAL::Dispatch_output_iterator<V,O>

Related Functions

(Note that these are not member functions.)

template<typename... V, typename... O>
Dispatch_or_drop_output_iterator< tuple< V... >, tuple< O... > > dispatch_or_drop_output (O... o)
 

Types

typedef V Value_type_tuple
 
typedef O Iterator_tuple
 

Creation

 Dispatch_or_drop_output_iterator (I...o)
 Constructor taking all the output iterators.
 
const Iterator_tupleget_iterator_tuple () const
 returns a reference to the tuple of output iterators.
 

Friends And Related Function Documentation

◆ dispatch_or_drop_output()

template<typename... V, typename... O>
Dispatch_or_drop_output_iterator< tuple< V... >, tuple< O... > > dispatch_or_drop_output ( O...  o)
related
Returns
a Dispatch_or_drop_output_iterator constructed from the arguments.