VS2005 用に翻訳する必要がある大規模な Visual Studio 6 C++ プロジェクトを継承しました。一部のクラスでは operator< および operator[] が定義されていますが、宣言で戻り値の型が指定されていません。VS6 ではこれが許可されていますが、VS2005 では許可されていません。
C 標準では、通常の関数のデフォルトの戻り値の型が int であると指定されていることは承知しており、VS6 がそれに従っていた可能性があると想定しましたが、これは C++ 演算子にも適用されますか? または、VS6 は独自に戻り値の型を把握できますか?
たとえば、コードは次のようなカスタム文字列クラスを定義します。
class String {
char arr[16];
public:
operator<(const String& other) { return something1 < something2; }
operator[](int index) { return arr[index]; }
};
VS6 は単純に両方の戻り値の型を int として配置するか、または operator[] が char を返し、operator< が bool を返す必要があることを理解するのに十分スマートでしたか (両方の結果を常に int に変換しないでください) ?
もちろん、このコードを VS2005 C++ に準拠させるために戻り値の型を追加する必要がありますが、プログラムの動作をすぐに変更しないように、以前と同じ型を指定するようにしたいと思います (現時点では互換性を確保する予定です。後で標準化します)。