146 Container(
const ComponentConfig& config,
const ComponentContext& context)
148 content_(Build(config, context))
151 T& Get() {
return content_; }
155 static constexpr std::string_view kName = impl::GetContainerName<T>();
158 static T Build(
const ComponentConfig& config,
const ComponentContext& context)
160 using Arg = impl::DependencyLocator<T>;
161 Arg arg{config, context};
165 if constexpr (std::is_constructible<T>::value) {
167 }
else if constexpr (std::is_constructible<T, Arg>::value) {
169 }
else if constexpr (std::is_constructible<T, Arg, Arg>::value) {
171 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg>::value) {
172 return T(arg, arg, arg);
173 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg>::value) {
174 return T(arg, arg, arg, arg);
175 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg>::value) {
176 return T(arg, arg, arg, arg, arg);
177 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
178 return T(arg, arg, arg, arg, arg, arg);
179 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
180 return T(arg, arg, arg, arg, arg, arg, arg);
181 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
182 return T(arg, arg, arg, arg, arg, arg, arg, arg);
183 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
184 return T(arg, arg, arg, arg, arg, arg, arg, arg, arg);
185 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
186 return T(arg, arg, arg, arg, arg, arg, arg, arg, arg, arg);
190 "Failed to find an appropriate version of T::T(...). Please check that T has a constructor with "
191 "arguments of containerized types or locatable via LocateDependency()."