> On 12 Sep 2018, at 23:46, Frank Heckenbach <f.heckenb...@fh-soft.de> wrote: > > Hans Åberg wrote: > >>>>> Modern C++ (i.e., C++11 and later) introduced "move only" types: types >>>>> such >>>>> as std::unique_ptr<T> that can never be duplicated. They must never be >>>>> copied (by assignments and constructors), they must be "moved". The >>>>> implementation of lalr1.cc used to copy symbols (including their semantic >>>>> values). This commit ensures that values are only moved in modern C++, >>>>> yet >>>>> remain compatible with C++98/C++03. >>>> >>>> Hopefully copy only types can still be used. So say: >>> >>> C++ will automatically copy when copy is available and move is not. >> >> Yes, but strictly, that is not what the above text says. > > Depends on your definitions. IMHO in (modern) C++ "move" always > implies "copy" if possible and necessary,
But that does not mean that a move operator is a copy operators, only that another is used. > though I wouldn't object > to spelling it out here. It is written in a pedagogical style intended for those that may not know. For those that do know, it suffices: This commit introduces C++11 move operators, while retaining the behavior under C++98/C++03.