У меня есть следующий класс:
namespace {
class MimeLogger : public std::ostringstream
{
public:
MimeLogger()
{}
~MimeLogger()
{
LOGEVENT( logModuleWSE, logEventDebug, logMsgWSETrace1, str() );
}
};
}
Когда я делаю это:
MimeLogger() << "Hello " << "World";
Первая строка "Hello "
обрабатывается как void*
. Если я отлаживаю код, "Hello "
передается в std::basic_ostream::operator<< (void const*)
и печатается как значение указателя, а не строка. Вторая строка "World"
правильно передается в глобальный перегруженный оператор <<, который принимает char const*
.
Я ожидаю, что оба использования оператора << разрешат одну и ту же перегрузку, но этого не происходит. Может кто-нибудь объяснить и, может быть, предложить исправление?
Заранее спасибо.
Я не упомянул, что застрял на C++03, но я рад, что некоторые люди рассмотрели случаи как C++03, так и C++11.