72 static const size_t tuple_size = N;
75 typedef const T* const_iterator;
79 UniTuple() : start(this->arr), init(
nullptr){
84 template<
typename ... TT>
86 UniTuple(
const TT &... args) : start(this->arr), init(
nullptr){
100 UniTuple(
const std::vector<S> & v) : start(this->arr), init(nullptr){
107 UniTuple(std::initializer_list<S> l) : start(this->arr), init(nullptr){
116 tuple_t & operator=(
const tuple_t &t){
123 tuple_t & operator=(
const value_type & value){
130 tuple_t & operator=(std::initializer_list<S> l){
138 tuple_t & operator*=(S arg){
153 const_iterator begin() const override final {
159 const_iterator end() const override final {
165 iterator begin() override final {
172 iterator end() override final {
180 const tuple_t & tuple()
const{
191 template<
typename ... TT>
193 tuple_t & tuple(
const TT &... args){
203 void debug(std::ostream & ostr)
const {
204 ostr <<
"UniTuple<" <<
typeid(T).name() <<
sizeof(T) <<
',' << N <<
">: {" << *
this <<
'}';
210 const iterator start;
223 return *(init=begin());
225 else if (init==end()){
226 std::cerr << __FILE__ <<
':' << __FUNCTION__ <<
"warning: exceeded inits: " << *
this << std::endl;
227 return *(init=begin());
236 UniTuple(UniTuple<T,N2> &tuple,
size_t i): start(tuple.begin()+i), init(nullptr){
tuplebase_t & assignSequence(T &sequence, bool LENIENT=false)
Proposed for tuples only; derived classes should not shadow this.
Definition TupleBase.h:287