Ссылаясь на макрос формата 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. Но с последним все использования макроса приводят к пустым строкам, и я совершенно ошеломлен относительно того, почему и как это исправить ...?