std::ostream & _return = ::operator<<(_os, _event)
Especially I would like to know: What is the data type of
_return and How can I print it in console.
std::ostream & _return = ::operator<<(_os, _event);
Especially I would like to know: What is the data type of _return and How can I print it in console.
The code looks for an
operator<< at global scope (not in any namespace), which can accept the
_event objects as parameters. It's not necessarily true, but given "<<" is the normal way streaming output is done in C++, you can expect that it's probably going to be a function such as:
std::ostream& operator<<(std::ostream&, const Event&);
Where Event is whatever type the
_event object has, and I've assumed
_os will be some type derived from
std::ostream, and consequently able to be handled by a reference to
Almost all such
operator<< functions return their first stream argument, so your code is probably doing some output, then effectively assigning to
_return as if it were:
std::ostream& _return = _os;
Here, the static type of
_return itself is
std::ostream& - a reference to a
std::ostream (Standard output stream) object, but the run-time type will be whatever type
_os has... that's the type of object that operations on
_return will invoke polymorphically. This could be
ostringstream or many other types.
How can I print it in console.
There is no Standard way to get textual type names in C++, though runtime polymorphic types do have runtime type information that includes an optional textual field that's normally populated with a type name of some sort - whether it will have full namespace qualifiers, name mangling or whatever is unspecified, but you can try it easily enough:
std::cout << typeid(_return).name() << '\n';
(For GCC, see Unmangling the result of std::type_info::name for tips on unmangling such type names)
_return is just a variable of type "Reference to
std::ostream class object".
And it is initialized with a return value of
<< operator in global namespace
::operator<<(ostream& os, const some_Obj_reference& ref).
Ttis could be as well
std::ostream & _return = (_os <<_event);