Mac (GCC 4.2) で短い小さなプログラムをコンパイルする際に、非常に興味深い問題があります。以下の関数は、char または文字列のみを stringstream にストリーミングしますが、それ以外 (int、double、float など) はストリーミングしません。実際、たとえば int を文字列に変換しようとすると、失敗フラグが設定されます。
_GLIBCXX_DEBUG=1
ただし、デバッグ モードの XCode でデフォルトで設定されているプリプロセッサ フラグを削除すると、目的の結果/正しい動作が得られます。
これが私が話している単純な機能です。value は T 型のテンプレート変数です。int、double、float (動作しない)、char および string (動作する) についてテスト済みです。
template < typename T >
const std::string Attribute<T>::getValueAsString() const
{
std::ostringstream stringValue;
stringValue << value;
return stringValue.str();
}
私が間違っていること、なぜこれが機能しないのか、またはこれが機能しなくなるためにプリプロセッサフラグが何をするのかについてのアイデアはありますか?
ありがとう!