202 using type = std::tuple<key_type<T>...>;
203 using key_type = Key<type>;
205 for (
auto i = 0u; i < m_keys.size(); ++i) {
206 auto _k = std::dynamic_pointer_cast<key_type>(m_keys[i]);
207 if (_k && std::operator==(_k->value, v)) {
208 return m_objects[i]->findOrCreate<U>(t...);
211 m_keys.push_back(std::shared_ptr<IKey>(
new key_type{ std::move(v) }));
212 auto objects = std::make_shared<ObjectList>();
213 m_objects.push_back(objects);
214 return std::make_pair(objects->create<U>(t...),
true);