8 minutes ago, MarcusAseth said:seriously, I don't know nor care for C++98, this other aproach won't work... whatever the point you're trying to make is, you're only obfuscating it more...
C++98 is just the 1st C++ standard.
C++11/14 are two recent standards (3th and 4th, respectively) which differentiate between lvalues and rvalues.
C++98 already supported assignment operators. The compiled C++98 code of all the code snippets in this topic would do exactly the same as C++11/14 code (backwards compatibility). So you do not use or exploit any new feature of C++11/14. So you cannot (wrongly) use lvalue/rvalue argumentation because it clearly is independent of lvalues/rvalues. It has nothing to do with lvalues/rvalues like I said. It is just implicit constness.
If you won't believe this, go to http://cpp.sh/ and select C++98 for compilation.