Ссылаясь на макрос в формате С++/встроенный ostringstream
Вопрос о макросе, который позволяет встроить конкатенацию объектов для создания строки, iostream-style.
Ответ был:
#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 С++ 2005. Но с последним все применения макроса приводят к пустым строкам, и я совершенно ошарашен, почему и как его исправить...?