C++形式マクロ/インラインostringstreamの参照
そこで問題となったのは、オブジェクトをインライン連結して文字列を iostream スタイルで作成できるようにするマクロでした。
答えは次のとおりです。
#define SSTR( x ) dynamic_cast< std::ostringstream & >( \
( std::ostringstream().seekp( 0, std::ios_base::cur ) << x ) \
).str()
使用法 (例):
throw std::runtime_error(
SSTR( "FooBar error: Value " << x << " exceeds " << y )
);
それは美しく機能します-GCCを使用します。Visual C++ 2005 でもコンパイルおよび実行されます。しかし、後者では、マクロを使用するとすべて空の文字列が返され、その理由と修正方法について非常に唖然とします...?