7#include <unordered_map>
8#include <unordered_set>
12#include <userver/dump/meta.hpp>
13#include <userver/utils/meta.hpp>
15USERVER_NAMESPACE_BEGIN
21template <
typename T,
typename Alloc>
22void Insert(std::vector<T, Alloc>& cont, T&& elem) {
23 cont.push_back(std::forward<T>(elem));
26template <
typename K,
typename V,
typename Comp,
typename Alloc>
27void Insert(std::map<K, V, Comp, Alloc>& cont, std::pair<
const K, V>&& elem) {
28 cont.insert(std::move(elem));
31template <
typename K,
typename V,
typename Hash,
typename Eq,
typename Alloc>
32void Insert(std::unordered_map<K, V, Hash, Eq, Alloc>& cont, std::pair<
const K, V>&& elem) {
33 cont.insert(std::move(elem));
36template <
typename T,
typename Comp,
typename Alloc>
37void Insert(std::set<T, Comp, Alloc>& cont, T&& elem) {
38 cont.insert(std::forward<T>(elem));
41template <
typename T,
typename Hash,
typename Eq,
typename Alloc>
42void Insert(std::unordered_set<T, Hash, Eq, Alloc>& cont, T&& elem) {
43 cont.insert(std::forward<T>(elem));
50using InsertResult =
decltype(
dump::Insert(std::declval<T&>(), std::declval<meta::RangeValueType<T>&&>()));