- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 
class cout_mt : public std::ostringstream
{
public:
   ~mt_ostream()
   {
      std::cout << str();
   }
};
#define cout static_cast<cout_mt&>(cout_mt())
                                Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+142
class cout_mt : public std::ostringstream
{
public:
   ~mt_ostream()
   {
      std::cout << str();
   }
};
#define cout static_cast<cout_mt&>(cout_mt())
                                Для того чтобы не разрывались строки вида: cout << "Value = " << value << ";" << endl; при использовании таких вызовов из нескольких тредов, а то ведь каждый оператор << является вызовом функции и частенько треды мешаю друг другу выводить . . .
А на счет неразрыва строк, где гарантия, что два деструктора в разных тредах не вызовутся одновременно ?