173 Container(
const ComponentConfig& config,
const ComponentContext& context)
175 content_(Build(config, context))
178 T& Get() {
return content_; }
182 static constexpr std::string_view kName = impl::GetContainerName<T>();
184 static yaml_config::Schema GetStaticConfigSchema() {
return impl::GetContainerConfigSchema<T>(); }
187 static T Build(
const ComponentConfig& config,
const ComponentContext& context)
189 using Arg = impl::DependencyLocator<T>;
190 Arg arg{config, context};
194 if constexpr (std::constructible_from<T>) {
196 }
else if constexpr (std::constructible_from<T, Arg>) {
198 }
else if constexpr (std::constructible_from<T, Arg, Arg>) {
200 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg>) {
201 return T(arg, arg, arg);
202 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg, Arg>) {
203 return T(arg, arg, arg, arg);
204 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg, Arg, Arg>) {
205 return T(arg, arg, arg, arg, arg);
206 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg, Arg, Arg, Arg>) {
207 return T(arg, arg, arg, arg, arg, arg);
208 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg>) {
209 return T(arg, arg, arg, arg, arg, arg, arg);
210 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>) {
211 return T(arg, arg, arg, arg, arg, arg, arg, arg);
212 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>) {
213 return T(arg, arg, arg, arg, arg, arg, arg, arg, arg);
214 }
else if constexpr (std::constructible_from<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>) {
215 return T(arg, arg, arg, arg, arg, arg, arg, arg, arg, arg);
219 "Failed to find an appropriate version of T::T(...). Please check that T has a constructor with "
220 "arguments of containerized types or locatable via LocateDependency()."