元ネタ

C言語では、構造体のメンバや型などの情報を取得することができません。C++でも基本的にはそうなのですが、もし、構造体のメンバや型などの情報を取得する必要がある場合、あるいはメンバを連番で管理する必要がある場合には、C++11以降であればstd::tupleクラステンプレートという強い味方があります。C++03までならBoost C++ Librariesにもtupleがあります。

tupleクラステンプレートは、簡単にいえばpairクラステンプレートを拡張したもので、3つ以上のメンバを扱うことができます。tupleでは各メンバへのアクセスは連番を用いて行います。また、<tuple>ヘッダには、tupleが保持するメンバ数を返す std::tuple_sizeメタ関数と、tupleの指定したメンバの型を返す std::tuple_elementメタ関数が提供されています。

こうしたtupleに対する操作は静的にしか行うことができませんが、tupleのメンバは静的に決定されるわけですから、とくに問題になることはありません。

↑ C++関数・テンプレート集