@@ -91,6 +91,10 @@ class ConfigurationAll : public ConfigurationPredicate
9191 predicate_list; // inlined form
9292
9393public:
94+ ConfigurationAll (const ConfigurationAll &) = delete ;
95+
96+ ConfigurationAll (ConfigurationAll &&) = default ;
97+
9498 ConfigurationAll (
9599 std::vector<std::unique_ptr<ConfigurationPredicate>> predicate_list)
96100 : predicate_list (std::move (predicate_list))
@@ -103,7 +107,14 @@ class ConfigurationAll : public ConfigurationPredicate
103107 * than base */
104108 ConfigurationAll *clone_configuration_predicate_impl () const override
105109 {
106- return new ConfigurationAll (*this );
110+ decltype (predicate_list) predicate_list_clone = {};
111+ predicate_list_clone.reserve (predicate_list.size ());
112+
113+ for (const auto &predicate : predicate_list)
114+ predicate_list_clone.push_back (
115+ predicate->clone_configuration_predicate ());
116+
117+ return new ConfigurationAll (std::move (predicate_list_clone));
107118 }
108119};
109120
@@ -114,6 +125,10 @@ class ConfigurationAny : public ConfigurationPredicate
114125 predicate_list; // inlined form
115126
116127public:
128+ ConfigurationAny (const ConfigurationAny &) = delete ;
129+
130+ ConfigurationAny (ConfigurationAny &&) = default ;
131+
117132 ConfigurationAny (
118133 std::vector<std::unique_ptr<ConfigurationPredicate>> predicate_list)
119134 : predicate_list (std::move (predicate_list))
@@ -126,7 +141,14 @@ class ConfigurationAny : public ConfigurationPredicate
126141 * than base */
127142 ConfigurationAny *clone_configuration_predicate_impl () const override
128143 {
129- return new ConfigurationAny (*this );
144+ decltype (predicate_list) predicate_list_clone = {};
145+ predicate_list_clone.reserve (predicate_list.size ());
146+
147+ for (const auto &predicate : predicate_list)
148+ predicate_list_clone.push_back (
149+ predicate->clone_configuration_predicate ());
150+
151+ return new ConfigurationAny (std::move (predicate_list_clone));
130152 }
131153};
132154
0 commit comments