What is an out-parameter? An out-parameter is a non const reference (or pointer) passed to the function, which will then modify it by setting a value.
In C++, we pass arguments by reference usually to avoid copying the object, but what about the behavior of the function taking these arguments.
Using pass-by-value is clear: the arguments are inputs, whereas pass-by-reference can be inputs, outputs or in-outs. This confuses the reader: one has to take extra steps to find out what it does, these constructs are not self-documenting.
I still often see that methods or functions take one or several references for the purpose to modify it. This is not intuitive, and can lead to unexpected behavior in your Cpp code.
If an object needs to be modified, a method on that object could be used instead. The modified object could also be returned, where it is clear that the return type is an ‘output’.
If you need to return several values, a std::tuple or std::pair can be used.