16 template<ComponentConcept C>
18 components.emplace_back([=] {
19 return std::shared_ptr<component_base_t> {
new C {comp}};
23 std::vector<std::shared_ptr<component_base_t>>
get_components()
const {
24 std::vector<std::shared_ptr<component_base_t>> _components { };
25 for (
const auto &builder: components) {
26 _components.emplace_back(builder());
35 void append_component(
const std::function<std::shared_ptr<component_base_t>()>& component) {
36 components.emplace_back(component);
40 for (
auto &builder: components) {
41 auto original_builder = builder;
43 return fun(original_builder());
49 return components.empty();
52 std::size_t
size()
const {
53 return components.size();
57 std::vector<std::function<std::shared_ptr<component_base_t>()>>
components { };
76 (components.emplace_back(std::shared_ptr<component_base_t>{
new C{comps}}), ...);
79 template<ComponentConcept C>
81 for (
auto &comp: comps) {
82 components.emplace_back(std::shared_ptr<component_base_t> {
new C {comp}});
86 template<ComponentConcept C>
88 components.emplace_back(std::shared_ptr<component_base_t> {
new C {comp}});
93 components.emplace_back(item);
98 components.insert_range(components.end(), other.components);
102 components.insert_range(components.end(), std::move(other.components));
106 components = other.components;
111 components = std::move(other.components);
116 components.insert_range(components.end(), other.components);
121 const std::vector<std::shared_ptr<component_base_t>> &components_
122 ): components(components_) {
140 components.emplace_back(component);
144 return components.begin();
148 return components.begin();
152 return components.end();
156 return components.end();
160 std::vector<std::shared_ptr<component_base_t>>
components { };
component_builder_t()=default
const auto & get_component_constructors() const
std::vector< std::shared_ptr< component_base_t > > get_components() const
void append_component(const std::function< std::shared_ptr< component_base_t >()> &component)
void transform(auto &&fun)
void append_component(std::shared_ptr< component_base_t > component)
component_holder_t & operator=(const component_holder_t &other)
component_holder_t & append(const component_holder_t &other)
component_holder_t()=default