любой системный определенный пользовательский тип, предшествующий объекту ostream, преобразуется в строку или char *?
как cout < 4 < "Hello World";
отлично работает, как это достигается? представл ет собой < оператор перегружен для каждого типа? есть ли способ достичь этого через одну общую перегруженную функцию? что я имею в виду, могу ли я иметь только один перегруженный операторный метод с одним параметром (например, void *), а затем решить внутри этого метода, как целое число типа to char *
Вещи работали частично, если я перегружал оператор < < используя шаблон i.e
class UIStream
{
private:
ofstream stream;
public:
UIStream();
~UIStream();
template <typename T>
UIStream& operator << (const T);
};
поэтому это работает
UIStream my_stream;
my_stream<<"bcd"<10;
однако он дает ошибку компилятора, когда я делаю это
my_stream <<endl;
ошибка C2678: двоичная '< <: оператор не найден, который принимает левый операнд типа UIStream (или нет приемлемого преобразования)
Не std:: endl тоже тип объекта?