Возможный дубликат:
std :: endl имеет неизвестный тип при перегрузке оператора ‹<
#include <iostream>
using namespace std;
struct OutputStream
{
template<class T>
OutputStream& operator <<(const T& obj)
{
cout << obj;
return *this;
}
};
OutputStream os;
int main()
{
os << 3.14159 << endl; // Compilation Failure!
}
Компилятор VC ++ 2012 жалуется:
ошибка C2676: двоичный '‹<': 'OutputStream' не определяет этот оператор или преобразование в тип, приемлемый для предопределенного оператора