私は、gcc 4.5.3 を使用している 2 人のエンド ユーザーと、gcc 4.6.3 に移動したばかりの 2 人のエンド ユーザーがいるライブラリに取り組んでいます。このライブラリは、新しい C++11 スマート ポインター (特に unique_ptr) を使用し、gcc 4.5.3 で正常にコンパイルされます。ただし、これらの 2 つのバージョンの間で、gcc は nullptr のサポートを開始したため、unique_ptr の API が変更され、標準により厳密に一致するようになりました。そうすることで、次のコードは問題ありませんでした。
unique_ptr up( new int( 30 ) );
...
if( up == 0 ) // ambiguous call now to unique_ptr(int) for 0
nullptr の有無にかかわらず動作するように、上記の if ステートメントを変更するクリーンな (つまり、次の文の) 方法はありますか? 可能であれば、構成チェックを避けてから、次のようなマクロ(これでうまくいくと思います)を避けたいと思います
#if defined NULLPOINTER_AVAILABLE
#define NULLPTR (nullptr)
#else
#define NULLPTR (0)
#endif
または、これが私が探している動作を取得する唯一の方法ですか?