vc6 отстой.
компилируется только так:
//header
#ifndef HEADER_H
#define HEADER_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <ostream>
namespace kernel
{
template <class charT, class traits = std::char_traits<charT> >
class basic_StreamBuf : public std::basic_streambuf<charT, traits>
{
public:
basic_StreamBuf(){}
};
typedef basic_StreamBuf<char> StreamBuf;
typedef basic_StreamBuf<wchar_t> wStreamBuf;
template <class charT, class traits = std::char_traits<charT> >
class basic_LogStream: public std::basic_ostream<charT, traits>
{
public:
basic_LogStream(std::basic_streambuf<charT, traits> * tt)
: std::basic_ostream<charT, traits>(tt)
{}
~basic_LogStream()
{delete rdbuf();}
};
typedef basic_LogStream<char> LogStream;
typedef basic_LogStream<wchar_t> wLogStream;
}
#endif // HEADER_H
//cpp
#include <iostream>
#include "header.h"
int main()
{
//
kernel::LogStream out(new kernel::StreamBuf);
out << "Death!";
std::cout << "Doo";
return 0;
}
MinGW компилирует в обоих случаях.