Add util::any_set::insert
This commit is contained in:
parent
49fe46bce2
commit
24a74b1208
1 changed files with 9 additions and 0 deletions
|
|
@ -9,6 +9,9 @@ namespace psemek::util
|
||||||
|
|
||||||
struct any_set
|
struct any_set
|
||||||
{
|
{
|
||||||
|
template <typename T>
|
||||||
|
T & insert(T value);
|
||||||
|
|
||||||
template <typename T, typename ... Args>
|
template <typename T, typename ... Args>
|
||||||
T & emplace(Args && ... args);
|
T & emplace(Args && ... args);
|
||||||
|
|
||||||
|
|
@ -34,6 +37,12 @@ namespace psemek::util
|
||||||
std::unordered_map<std::type_index, std::any> storage_;
|
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>
|
template <typename T, typename ... Args>
|
||||||
T & any_set::emplace(Args && ... args)
|
T & any_set::emplace(Args && ... args)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue