139 Container(
const ComponentConfig& config,
const ComponentContext& context)
141 content_(Build(config, context))
144 T& Get() {
return content_; }
148 static constexpr std::string_view kName = impl::GetContainerName<T>();
151 static T Build(
const ComponentConfig& config,
const ComponentContext& context)
153 using Arg = impl::DependencyLocator<T>;
154 Arg arg{config, context};
158 if constexpr (std::is_constructible<T>::value) {
160 }
else if constexpr (std::is_constructible<T, Arg>::value) {
162 }
else if constexpr (std::is_constructible<T, Arg, Arg>::value) {
164 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg>::value) {
165 return T(arg, arg, arg);
166 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg>::value) {
167 return T(arg, arg, arg, arg);
168 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg>::value) {
169 return T(arg, arg, arg, arg, arg);
170 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
171 return T(arg, arg, arg, arg, arg, arg);
172 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
173 return T(arg, arg, arg, arg, arg, arg, arg);
174 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
175 return T(arg, arg, arg, arg, arg, arg, arg, arg);
176 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
177 return T(arg, arg, arg, arg, arg, arg, arg, arg, arg);
178 }
else if constexpr (std::is_constructible<T, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg, Arg>::value) {
179 return T(arg, arg, arg, arg, arg, arg, arg, arg, arg, arg);
183 "Failed to find an appropriate version of T::T(...). Please check that T has a constructor with "
184 "arguments of containerized types or locatable via LocateDependency()."