4. 構造体に関するテンプレート
Cでは、構造体のメンバや型などの情報を取得することができません。C++でも基本的にはそうなのですが、もし、構造体のメンバや型などの情報を取得する必要がある場合、あるいはメンバを連番で管理する必要がある場合には、std::tr1::tuple クラステンプレートという強い味方があります。
これは次期規格で導入される予定のものですが、どんなものか興味のある方は、std::tr1::tuple の元になったboost::tuple を調べてみてください。また、Boost C++ Libraries 1.34 からは、TR1ライブラリがサポートされるようになりましたので、それを用いれば、次期規格の仕様を先取りすることができます。
tuple クラステンプレートは、簡単にいえば pair クラステンプレートを拡張したもので、3 つ以上のメンバを扱うことができます。tuple では、各メンバへのアクセスは連番を用いて行います。また、<utility> ヘッダには、tuple が保持するメンバ数を返す std::tr1::tuple_size メタ関数と、tuple の指定したメンバの型を返す std::tr1::tuple_element メタ関数が提供されています(Boost C++ Libraries では TR1 ライブラリで提供されます)。
こうした tuple に対する操作は静的にしか行うことができませんが、tuple のメンバは静的に決定されるわけですから、特に問題になることはありません。
元ネタ
ブックナビゲーション
- 技術情報
- Boost C++ Libraries メモ
- C++と組込み環境
- C++サンプル集
- C++テンプレート集
- C++プログラマのためのC言語入門
- C/C++迷信集
- C99関数・マクロ・前処理スクリプト集
- C言語再入門
- C言語徹底入門
- Drupal メモ
- TOPPERS 情報
- ベターCとしてのC++
- マイコン メモ
- ライブラリ開発入門
- 分割コンパイルをきわめる
- 擬似プロセッサを作る
- 象の卵を探して...
- 車輪の再発明
- 過去の情報

