Add util::any_set::insert

This commit is contained in:
Nikita Lisitsa 2024-03-11 23:34:42 +03:00
parent 49fe46bce2
commit 24a74b1208

View file

@ -9,6 +9,9 @@ namespace psemek::util
struct any_set
{
template <typename T>
T & insert(T value);
template <typename T, typename ... Args>
T & emplace(Args && ... args);
@ -34,6 +37,12 @@ namespace psemek::util
std::unordered_map<std::type_index, std::any> storage_;
};
template <typename T>
T & any_set::insert(T value)
{
return std::any_cast<T&>(storage_[typeid(std::remove_cvref_t<T>)] = std::move(value));
}
template <typename T, typename ... Args>
T & any_set::emplace(Args && ... args)
{