On Mon, Jun 7, 2021 at 10:53 AM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:

PS I would like to compare this again with the const qualifier of the C and C++ languages (with their respective semantics). There may be some programmers that are annoyed with compiler warnings when constness is not properly cast, but the majority isn't (I hope!) and instead makes sure that their programs are logically correct and make sure that every single cast makes sense. (And for the latter, it is important that the casts are explicit).

(NB: Of course, the const qualifier in C is not without problems, often due to historical baggage, but this is a question of good API design and not its general usefulness.)

Actually, you can pass a non-const object to a function that expects a const object without breaking the type semantics of C/C++.   I can argue that the analogy holds for our case---a transient object can be passed to a functional interface; since the transient object is "used", it will never be passed to another linear-updating interface, hence it's safe.  Am I missing something?