17 template<
class Object,
class ...Value>
24 strategies_(std::make_tuple(strategy.
clone()...)) {}
32 strategies_(builder.clone_strategies()) {}
38 auto strategies_count = std::tuple_size<decltype(strategies_)>{};
39 return produce(strategies_,
40 std::make_index_sequence<strategies_count>{});
44 std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...> strategies_;
50 template<std::size_t... Indices>
53 std::index_sequence<Indices...>
55 return produce(std::get<Indices>(strategies)...);
65 return Object((*strategy)()...);
68 std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...>
69 clone_strategies()
const {
70 auto strategies_count = std::tuple_size<decltype(strategies_)>{};
71 return clone_strategies(strategies_,
72 std::make_index_sequence<strategies_count>{});
79 template<std::size_t... Indices>
80 std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...>
83 std::index_sequence<Indices...>
85 return clone_strategies(std::get<Indices>(strategies)...);
91 std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...>
95 return std::make_tuple(strategy->clone()...);
Builder(const Builder< Object, Value...> &builder)
Definition: builder.h:31
Builder(const cauldron::Strategy< Value > &...strategy)
Definition: builder.h:23
Object operator()() const override
Definition: builder.h:37
std::unique_ptr< Strategy< Object > > clone() const override
Definition: bases.h:99