Das Tupel von boost bietet Hilfsfunktionen get_head()
y get_tail()
Ihre Hilfsfunktionen könnten also wie folgt aussehen:
inline void call_do_sth(const null_type&) {};
template <class H, class T>
inline void call_do_sth(cons<H, T>& x) { x.get_head().do_sth(); call_do_sth(x.get_tail()); }
wie hier beschrieben http://www.boost.org/doc/libs/1_34_0/libs/tuple/doc/tuple_advanced_interface.html
mit std::tuple
sollte es ähnlich sein.
Leider ist es so, dass std::tuple
scheint eine solche Schnittstelle nicht zu bieten, so dass die zuvor vorgeschlagenen Methoden funktionieren sollten, oder man müsste zu boost::tuple
die weitere Vorteile hat (wie die bereits genannten io-Operatoren). Allerdings gibt es einen Nachteil von boost::tuple
mit gcc - es akzeptiert keine variadic Vorlagen noch, aber das kann bereits behoben werden, da ich nicht die neueste Version von Boost auf meiner Maschine installiert haben.