C++ 移行ガイド

第 2 章 互換モードの使い方

この章では、C++ 4 コンパイラ用に記述したコードを C++ 5.0 で使用する方法を 説明します。

互換モード

次のコンパイラオプションは、ともに互換モードを指示します。


-compat
-compat=4

例:


CC -compat -O myfile.cc mylib.a -o myprog

以降で説明するように、互換モードにおいては、C++ 4 と C++ 5.0 コンパイラの間に多少の使用方法の違いがあります。

互換モードで有効なキーワード

互換モードでは、新しい C++ キーワードの一部がキーワードとして認識されます。ただし、これらのキーワードの大部分は、次の表に示すようにコンパイラオプションを使用して無効にすることができます。しかし、コンパイラオプションを使用するよりも、ソースコードを変更してこれらのキーワードを使用しないようにすることをお勧めします。

表 2-1 互換モードで有効なキーワード

キーワード 

無効にするためのオプション 

explicit

-features=no%explicit

export

-features=no%export

mutable

-features=no%mutable

typename

なし 

typename キーワードを無効にすることはできません。表 3-1 に示すその他の新しい C++ キーワードは、互換モードではデフォルトで無効になります。

言語の意味

C++ 5.0 コンパイラでは、C++ 言語の一部の規則について適用機能が強化されています。旧式の構文に対する基準も厳しくなっています。

新しいバージョンの C++ コンパイラをリリースする際に、旧式の構文のサポートを中止するということは、以前からの方針 (マニュアルに記載) でした。しかし、C++ 4 で旧式の構文に関する警告を有効にしてコンパイルすると、かなり前の C++ コンパイラでは受け入れられてきたが、実際には不正であったコードが見つかることがあります。旧式の構文とは主として、アクセス規則 (非公開や限定公開) に違反した構文や、型一致規則に違反した構文、コンパイラが生成した一時変数を参照パラメータの対象として使用した構文などです。

新たに適用されることになった規則は、次のとおりです。

解決策: キャストを使用してください。