|
|
移植性 |
 |
Spirit は様々なコンパイラでコンパイルでき、適切に動作することをテストされている:
- g++ 2.95.3
- g++ 3.1
- g++ 3.2
- Borland 5.5.1
- Borland 5.6.1
- Intel 5.0
- Intel 6.0
- Intel 7.0Visual Age C++ 5.02
- Comeau 4.24.5
- Metrowerks CodeWarrior 7.2
- Metrowerks CodeWarrior 8.3
- MSVC 6 SP5
- MSVC 7
- MSVC 7.1
Spirit は ANSI/IOS C++ に100%準拠している。
残念ながら、いくつかのコンパイラは Spirit の全ての機能をサポートしていないが、
これは本質的にはバグや標準への不十分な適合性のためである。
これらの非適合性問題の回避策を見つけることの優先度は高いが、これには多大な時間と労力がかかる。
- MSVC 6 および 7 はテンプレートの部分特殊化版(PTS)をサポートしていない。
PTSに依存するいくつかの機能は、そのため MSVC 6 および 7 ではコンパイルできない。
これにはクロージャ、セマンティックアクションとしてのラムダ式(Phoenix および BLL)、
およびツリー(抽象構文木および構文解析木)が含まれる。
うまくいけば、これらの機能は MSVC 6 および 7 をサポートするよう移植されるだろう。
また、非常に期待されている MSVC 7.1 は PTS をサポートしており、Spirit を完全にコンパイルするようテストされた。
- リストパーサとコメントパーサは MSVC6 ではまだコンパイルできない。代わりに % 演算子を用いること。
- multi_pass は MSVC6、MSVC7 および Metrowerks 7.2 ではまだコンパイルできない。
- Comeau は file_iterator に問題がある。その問題は標準への適合性とはまったく関係がない。
EDG ベースのコンパイラである Comeau は現存する中で最も標準準拠度が高いコンパイラの一つである。
問題は file_iterator の POSIX API コールの使い方にある。
- 正規表現パーサは MSVC6 および 7 の両方と、Intel 5.0 および Comeau 4.24.5 でコンパイルできない。
- Metrowerks CodeWarrior 7.2 はメタパーサおよびそれに依存するダイナミックパーサなどの機能をコンパイルできない。
これは CodeWarrior 7.2 が boost::is_base_and_derived や boost::is_convertible の実装のように sizeof トリックを使うコードで間違った結果を与えることによる。
さらに詳しくは、Spirit配布物の中のここにあるコンパイラごとのすべてのテストおよび例の表をチェックできる。
この表は定期的に更新されている。
Copyright © 1998-2003 Joel de Guzman
Permission to copy, use, modify, sell and distribute this document
is granted provided this copyright notice appears in all copies. This document
is provided "as is" without express or implied warranty, and with
no claim as to its suitability for any purpose.
Japanese Translation Copyright © 2003 Kent.N
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。
このドキュメントの対象: Boost Version 1.30.0
最新版ドキュメント(英語)