diff --git a/src/lib/diff/tree-mutator-collection-binding.hpp b/src/lib/diff/tree-mutator-collection-binding.hpp index 777512c57..4903c1387 100644 --- a/src/lib/diff/tree-mutator-collection-binding.hpp +++ b/src/lib/diff/tree-mutator-collection-binding.hpp @@ -164,7 +164,7 @@ namespace diff{ */ template struct CollectionBinding -// : util::MoveOnly + : util::MoveOnly { using Coll = typename Strip::TypeReferred; using Elm = typename Coll::value_type; diff --git a/src/lib/diff/tree-mutator-listener-binding.hpp b/src/lib/diff/tree-mutator-listener-binding.hpp index d2345e62a..2fdf6563f 100644 --- a/src/lib/diff/tree-mutator-listener-binding.hpp +++ b/src/lib/diff/tree-mutator-listener-binding.hpp @@ -81,6 +81,9 @@ namespace diff{ , changeListener_{functor} { } + // move construction allowed and expected to happen + Detector4StructuralChanges (Detector4StructuralChanges&&) =default; + /** once the diff is for this level is completely applied, * the TreeMutator will be discarded, and we can fire our * change listener at that point. */ @@ -105,16 +108,12 @@ namespace diff{ */ template template -// inline Builder> inline auto Builder::onStructuralChange (LIS changeListener) { ASSERT_VALID_SIGNATURE (LIS, void(void)) - using BIN = Detector4StructuralChanges; - BIN furz{changeListener, move(*this)}; - return Builder (move (furz)); -// return chainedBuilder> (changeListener); + return chainedBuilder> (changeListener); } }//(END)Mutator-Builder decorator components... diff --git a/src/lib/diff/tree-mutator.hpp b/src/lib/diff/tree-mutator.hpp index f7e625984..7d50a5cd0 100644 --- a/src/lib/diff/tree-mutator.hpp +++ b/src/lib/diff/tree-mutator.hpp @@ -141,7 +141,7 @@ namespace diff{ * activities to concrete manipulations known within target scope. */ class TreeMutator -// : util::MoveOnly + : util::MoveOnly { public: @@ -149,7 +149,7 @@ namespace diff{ // only default and move construction allowed TreeMutator () =default; -// TreeMutator (TreeMutator&&) =default; + TreeMutator (TreeMutator&&) =default; diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index b197e722d..be4c54ca3 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -36182,16 +36182,17 @@ - - + + - - - + + + + @@ -36216,7 +36217,8 @@ - + + @@ -36250,13 +36252,33 @@ - - - - + + + + + + + + + + + + +

+ selbst wenn er über x Basisklassen von MoveOnly erbt +

+ + +
+ +
+
+ + + + + - -
@@ -50932,6 +50954,123 @@
+ + + + + + + + + + + +

+ werden u.U sillschweigend nicht generiert +

+ + +
+ + + + + +

+ Wenn bestimmte Vorraussetzungen nicht erfüllt sind, dann unterbleibt das automatische Injizieren eines generierten Konstruktors. Die Klasse verhält sich dann so, als wäre die btr. Definition nicht gegeben... +

+ + +
+ + + + + + + +

+ d.h. Member-Init kann unterbleiben (bei elementaren Typen, wenn die Klasse damit ein POD wird). +

+

+ Und noch häufiger: wir schwenken von Move-Konstruktion auf Copy-Konstruktion um +

+ + +
+
+ + + + + + + + + + +

+ error: use of deleted function Derived::Derived(const Derived &) +

+

+ note: Derived::Derived(const Derived &) is implicitly deleted because the default definition would be ill-formed: +

+

+ ...und dann kommt der Fehler, der passieren würde.... +

+

+ error: use of deleted function Base::Base(const Base&) +

+

+ note: Base::Base(const Base&)  is implicitly deleted because the default definition would be ill-formed: +

+

+ error: use of deleted function SomeMember::SomeMember(const SomeMember &) +

+

+ +

+

+ ... +

+

+ ... +

+

+ ... +

+

+ ... +

+

+ ... +

+ + +
+ + + +
+
+ + + + + + + + + + + + + + + + + +