10#include <unordered_map>
11#include <unordered_set>
15#include <userver/dump/meta.hpp>
16#include <userver/utils/meta.hpp>
18USERVER_NAMESPACE_BEGIN
24template <
typename T,
typename Alloc>
25void Insert(std::vector<T, Alloc>& cont, T&& elem) {
26 cont.push_back(std::forward<T>(elem));
29template <
typename K,
typename V,
typename Comp,
typename Alloc>
30void Insert(std::map<K, V, Comp, Alloc>& cont, std::pair<
const K, V>&& elem) {
31 cont.insert(std::move(elem));
34template <
typename K,
typename V,
typename Hash,
typename Eq,
typename Alloc>
35void Insert(std::unordered_map<K, V, Hash, Eq, Alloc>& cont, std::pair<
const K, V>&& elem) {
36 cont.insert(std::move(elem));
39template <
typename T,
typename Comp,
typename Alloc>
40void Insert(std::set<T, Comp, Alloc>& cont, T&& elem) {
41 cont.insert(std::forward<T>(elem));
44template <
typename T,
typename Hash,
typename Eq,
typename Alloc>
45void Insert(std::unordered_set<T, Hash, Eq, Alloc>& cont, T&& elem) {
46 cont.insert(std::forward<T>(elem));
53 meta::kIsRange<T> && std::is_default_constructible_v<T> && meta::kIsSizable<T> &&
54 requires(T& t, meta::RangeValueType<T>&& v) {
dump::Insert(t, std::move(v)); };