Question

I was thinking about implementing a ternary put operator in cpp similar to "<<":

mystream <<< param2 param3;

Is this possible? Does it already exist? One remark: I remember having seen this:

out <<STDERR param

Wouldnt this already be a ternary operator?

Was it helpful?

Solution

To send C++ output to the stderr stream, use cerr << var1 << var2 or clog << 1 << 2.

There is exactly one ternary operator in C++, ?:, and it cannot be overloaded.

<<< is a binary operator in all languages where I've seen it. C++ does not have it; such a character sequence would be parsed as << < which is nonsense as neither can be used as a unary operator.

Finally, the second and third "operands" there are separated only by whitespace. C++ has no grammar productions including expression expression; that would lead to serious ambiguities.


The chaining behavior as in cerr << var1 << var2 is achieved by overloads of the form

std::ostream & operator << ( std::ostream &, my_class const & );

The ostream & return type allows the result of the first call cerr << var1 to be used as the left-hand operand to << var2.

OTHER TIPS

No, you can't make up new operators. You may only use the existing ones, and <<< is not among them.

out <<STDERR param

this can mean anything, both can be macros or literals.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top