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){
102 UniTuple(std::initializer_list<S> l) : start(this->arr), init(nullptr){
111 tuple_t & operator=(
const tuple_t &t){
118 tuple_t & operator=(
const value_type & value){
125 tuple_t & operator=(std::initializer_list<S> l){
133 tuple_t & operator*=(S arg){
148 const_iterator begin() const override final {
154 const_iterator end() const override final {
160 iterator begin() override final {
167 iterator end() override final {
175 const tuple_t & tuple()
const{
186 template<
typename ... TT>
188 tuple_t & tuple(
const TT &... args){
198 void debug(std::ostream & ostr)
const {
199 ostr <<
"UniTuple<" <<
typeid(T).name() <<
sizeof(T) <<
',' << N <<
">: {" << *
this <<
'}';
205 const iterator start;
218 return *(init=begin());
220 else if (init==end()){
221 std::cerr << __FILE__ <<
':' << __FUNCTION__ <<
"warning: exceeded inits: " << *
this << std::endl;
222 return *(init=begin());
231 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