Pull Request №697 RosettaCommons/rosetta/main ← lyskov-ai/rosetta/refactor/rule-of-zero-batched-fixes
Merge: d10f3af574b60550f256856d5a9742600ce1128b←4d2c33ca7a4b5531b084f002cd469d790f5fa119
Apply Rule of Zero to old-style uncopyable classes in core/ and protocols/
----------------
Merge commit message:
Apply Rule of Zero to old-style uncopyable classes in core/ and protocols/
Modernize 31 files that used the pre-C++11 idiom of declaring (but not
defining) private copy constructor and assignment operator to forbid
copies. The link-error-as-enforcement trick predates `= delete` and is
fragile (silent same-translation-unit ICE breakage, confusing diagnostics).
Two flavours of fix:
1. Stand-alone non-copyable classes (InteractionGraphBase node/edge/graph
family, FlexbbInteractionGraph, JobDigraph, AtomTreeCollection's
ResidueAtomTreeCollection, Matcher, MonteCarlo's operator=): replace
the unimplemented private declarations with public `= delete` copies.
Where the old assignment took a non-const reference or returned `T const &`
that was a holdover from the C++03 idiom; the modernized signatures take
`T const &` and return `T &`.
2. Singleton-derived factories (utility::SingletonBase children): drop the
redundant unimplemented copy/assignment declarations entirely. The base
class already `= delete`s its own copy/assignment, which transitively
makes the derived class's implicit copies deleted, so the extra lines
were noise.
No behaviour change: copies/assignments that were link errors before are
now compile errors, which is the intended improvement in diagnostic
quality. Debug build passes clean.