C++ Technical Report 1
(Technical Report on C Library Extensions から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2014/11/04 13:16 UTC 版)
C++ Technical Report 1 (TR1、Technical Report on C++ Library Extensions)は、ISO/IEC TR 19768:2007[1] の非公式名称で、標準C++ライブラリの拡張についての標準規格である。これには正規表現、スマートポインタ、ハッシュ表、擬似乱数生成器などが含まれている。TR1の目標は「拡張された標準C++ライブラリの使用方法について慣習を確立してほしい」とのことである[2]。
概要
TR1は既に一部ないし全部を実装しているものもある。ちなみに、TR1のほとんどはBoostに含まれており、それが利用可能である。
TR1はC++のライブラリの拡張の全てではない。たとえばC++11ではスレッドに関するライブラリが含まれ、言語機能自体の拡張(move semanticsやvariadic templatesの追加など)などSTL全体に機能増強が行われた。
なお、TR1で追加されたライブラリは、現標準ライブラリと区別するため、名前空間 std::tr1
に入れられている。しかし、C++11では名前空間 std
に入れられた。
TR1にとってC++11は必須ではないが、現行のC++上で全て実装可能というわけでもない。例えば、型のPOD性を検査する関数is_pod
の実装にあたって、現行のC++にはクラスがPODであることを判別する方法が無い。したがって、現在のC++処理系でのTR1実装は、コンパイラ独自の拡張機能を使用するか、あるいは擬似的な実現に留まる。この状況は、かつて一部コンパイラがテンプレートの部分特殊化に対応していなかった時代のSTLの擬似実装とよく似ている。
注意点としては、TR1はC++の仕様の一部ではないので、std::tr1
名前空間やTR1の機能に依存したコードは後々問題を起こす可能性がある。というのも、最近のドラフトであるn3225[2]では<type_traits>
で定義される has_*
はis_*
へ変更されている。また、std::tr1
は次期標準の仕様にも含まれないので注意されたい。
実装
次のような実装が存在する。
- Visual C++ 2008のFeature Pack[3]そしてその後に出たサービスパック1[4]
- libstdc++[5]
- Boost[6]
内容
TR1には次のものが含まれている。
一般ユーティリティ
参照ラッパ
- Boost.Ref由来[3]。
<functional>
ヘッダに追加。 -cref
,ref
,reference_wrapper
- アルゴリズムや関数オブジェクトに対して、値渡しではなく参照渡しを行うことができる。
スマートポインタ
- Boost Smart Pointer libraryを基にしている [4]。
<memory>
ヘッダに追加。 -shared_ptr
,weak_ptr
, etc- より安全にメモリ管理を行うためのユーティリティ。参照カウントに基づくスマートポインタである。
関数オブジェクト
<functional>
ヘッダに4つのモジュールが追加。
function - 多態的関数ラッパ
- Boost.Functionを基にしている[5]。
bind - 関数オブジェクトの束縛
result_of - 関数の戻り値の型
- Boostを基にしている。
- 関数呼出式から、戻り値の型を決める機構。
mem_fn
- Boost Mem Fn libraryを基にしている[7]。
- 現標準の
std::mem_fun
及びstd::mem_fun_ref
から機能向上したものである。 - メンバ関数へのポインタを関数オブジェクトにする機構である。
メタプログラミングと型特性
- 新しく
<type_traits>
ヘッダが追加。 -is_pod
,has_virtual_destructor
(C++11ではis_virtual_destructible
に変更),remove_extent
, etc - Boost Type Traits libraryを基にしている[8]。
- データ型に関しての問い合わせを容易にすることによってメタプログラミングの支援をする。
数値計算
擬似乱数生成
- 新しく
<random>
ヘッダが追加。 -variate_generator
,mersenne_twister
,poisson_distribution
, etc - Boost Random Number Libraryを基にしている[9]。
数学関数
コンテナ
タプル
- 新しく
<tuple>
ヘッダが追加。 -tuple
- Boost Tuple libraryを基にしている[10]。
- およそ
std::pair
の拡張である。 - さまざまなデータ型を混在できる容量固定のデータ構造である。
容量固定配列
- 新しく
<array>
ヘッダが追加。 -array
- Boost Array libraryから採用された[11]。
- 標準の
std::vector
のような動的配列とは全く逆の存在である。
ハッシュテーブル
- 新しく
<unordered_set>
,<unordered_map>
ヘッダが追加。 - 既存のライブラリを基にしたものではなく、新たに作られたものである。
- 要素の参照は、大抵の場合定数時間で済むが、最悪の場合には線形時間かかる。
- 名前が
hash_set
(SGI版STLに含まれるライブラリ)などでないが、標準のset
,map
はイテレータを用いて順序付けされた(ソートされた)要素アクセスが可能であるのに対し、unordered_set
,unordered_map
では不可能であることを示している。実装ではなくインターフェース(利用法)に由来した名前をつける発想である。
正規表現
- 新たに
<regex>
ヘッダが追加。 -regex
,regex_match
,regex_search
,regex_replace
, etc - Boost Regex libraryを基にしている[12]。
- 正規表現によるパターンマッチを行うライブラリ。
C互換ライブラリ
C++はC言語と互換になるように設計されているものの、現在C++は厳密な上位互換ではない。TR1はその溝を埋めるため<complex>, <locale>, <cmath>その他のヘッダに拡張を行っている。これによってC99とある程度は近づいたものの、C99の全てがTR1に含まれているわけではない。
C++ Technical Report 2
C++ Technical Report 2 も作られたが[7]、正式に出版されることはなかった。
脚注
- ^ ISO/IEC TR 19768:2007
- ^ [1]
- ^ “Visual C++ 2008 Feature Pack Release” (2008年4月22日). 2009年8月2日閲覧。
- ^ “標準 C++ ライブラリ TR1 拡張リファレンス”. 2009年8月29日閲覧。
- ^ “The GNU C++ Library Documentation Chapter 1. Status”. 2009年8月29日閲覧。
- ^ “Boost Libraries Chapter 21. Boost.TR1”. 2009年8月29日閲覧。
- ^ TR2 call for proposals
関連項目
- C++11 - TR1の内容が取り込まれたC++標準。
- C++14
- Boost - TR1の一部のライブラリの基となっている。
- Standard Template Library - 現標準C++ライブラリの一部である。
参考文献
- Peter Becker: "The C++ Standard Library Extensions: A Tutorial and Reference", 2006, ISBN 0321412990. TR1にも言及している。
外部リンク
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf - このドラフト文書のPDF
- http://aristeia.com/EC3E/TR1_info_frames.html - スコット・メイヤーズ TR1 page, links to documents and articles
|
「Technical Report on C++ Library Extensions」の例文・使い方・用例・文例
- MondayはMon.と略される
- 米国のCongressは英国のParliamentに相当する
- バンクーバー― マレーシアに拠点を置くBaronホテルグループはHoward Hotels Internationalを買収する交渉を行っている。
- Baronは、アジアの主要都市に100 を超えるホテルを構える、ビジネスホテルの巨大企業で、高級ホテル市場への進出を目指している。
- Baronが企業買収に成功すれば、同社は、名声を確立したHoward Hotelsブランドやその豪華なおもてなしのノウハウを手に入れることになる。
- 買収がうまくいけば、BaronはHoward Hotelsの株式の65%を所有することになる。
- 同社には、都会の環境に田舎の生活を取り入れたいと思う中流階級の都会人の間に数多くの支持者がおり、最高経営責任者のByron Coxによると、「住宅設計や建設は弊社のような企業にとって当然の結果だ。弊社のお客様は、彼らが所有するPatioの商品と調和する建物を求めている」とのことだ。
- 寄付をしてくださる方はJessie Orbisonまでご連絡のほど、お願いいたします。
- Jackson瓶詰め工場まで、40分間バスに乗車。
- Jackson工場に到着。工場長Otis Cookeによる歓迎の言葉(Cooke氏による工場の歴史の簡単な説明。Cooke氏は見学の案内も担当)
- 工場の食堂にて休憩(Jackson工場で製造・瓶詰めされた飲料の試飲。ほかに軽食を提供)
- 開会の辞:Dotty Powers(議長)が午後6 時30 分に会議を開始し、新会計係のClaire Hudsonを紹介した。
- Hudsonさんは、来年の予算超過を避けるために、経費を慎重に見直すべきだと提案した。
- Jeb Andersonは現在シドニーにいる。
- 2月10日の月曜日付けで、Monica RegisがCarla Yuの後任となりました。
- Monicaは、コピー用紙やプリンターカートリッジからホチキスの針やクリップまで、何か必要になったら連絡すべき人です。
- Monica Regisと直接会って歓迎する。
- Carla Yuの代わりにMonica Regisに連絡する。
- 管理カードは、2 月11 日以降ならいつでも供給部のJasonから受け取ることができます。
- Phil の後任となるMay Hondaが、会の幹事を務めます。
- Technical Report on C Library Extensionsのページへのリンク