AK: Add Variant::unsafe_get()
This performs no validation and no verifications on release. only useful when you've already verified the type by external means.
This commit is contained in:
parent
d8ea9e67f8
commit
3e62cae2ad
1 changed files with 16 additions and 0 deletions
16
AK/Variant.h
16
AK/Variant.h
|
|
@ -355,6 +355,14 @@ public:
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T& unsafe_get()
|
||||
requires(can_contain<T>())
|
||||
{
|
||||
ASSERT(has<T>());
|
||||
return *bit_cast<T*>(&m_data);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T& get()
|
||||
requires(can_contain<T>())
|
||||
|
|
@ -380,6 +388,14 @@ public:
|
|||
return *bit_cast<T const*>(&m_data);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T const& unsafe_get() const
|
||||
requires(can_contain<T>())
|
||||
{
|
||||
ASSERT(has<T>());
|
||||
return *bit_cast<T const*>(&m_data);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
[[nodiscard]] bool has() const
|
||||
requires(can_contain<T>())
|
||||
|
|
|
|||
Loading…
Reference in a new issue