freestandingという概念は、C++98の頃から存在する。ところが、この概念は、一般のC++プログラマーには、あまりなじみがないと思う。そこで、この意味と意義について解説してみようと思う。
freestandingとは何かということを説明する前に、C++が使われている状況について説明する必要がある。
C++は、非常に広く使われている。OSやドライバといった低級な部分から、エンドユーザーが実際に使うGUIのソフトウェアまで、幅広く使われている。携帯電話などにも、C++は使われている。
携帯電話やリアルタイム性が要求される場面など、リソースが極端に限られている環境では、通常の標準ライブラリが適さない場合も多い。そういう環境では、C++の言語自体は実装していても、ライブラリは、完全に提供していないこともある。そういう場合においても、C++の言語を実装する上で、最低限必要な条件を決めておこうというのが、freestandingの意図だ。
ここでは、freestanding規格のうち、ヘッダーについて更に詳しく説明する。
C/C++というのは、言語とライブラリの間の依存性が、極力少なくなるように考えられている言語である。なぜなら、環境によって標準ライブラリが適さない場合もあるのからだ。この思想があるからこそ、現在、リッチなクライアントアプリケーションから、組み込み系まで、幅広くC++が使われているのである。
ところが、やはり言語としては、ライブラリから完全に独立するということは難しい。
たとえばnewを実装するには、一連のnew 演算子などが必要であるし、例外クラスも必要である。typeidが返すのは、type_infoというクラスだ。
これを考えれば、言語をライブラリから完全に引き離すのは、仮に出来たとしても、面倒な事が多い。しかし、C++は先にも述べたように、言語とライブラリ間の依存性を、極端に気にする思想でもって設計された言語である。そこで、規格にも、最低限の実装にはどんなヘッダーが必要か、具体的に書かれているのである。
なぜこんな事を解説しているかというと、n2932 Fixing freestanding: iteration 2.2をレビューする必要があるからだ。この前提知識があれば、n2932が理解しやすくなると思う。
n2932自体には、プログラマが直接気にしなければならないことは、ほとんど書かれていない。ただ、type_indexを使う際には、<typeindex>ヘッダーをincludeしなければならないという変更がある。これだけは抑えておいた方がいい
No comments:
Post a Comment
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.