mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 00:50:22 +00:00
AK: Introduce ability to default-initialize a Variant
I noticed that Variant<Empty, …> is a somewhat common pattern while working on #10080, and this will simplify a few use-cases. :^)
This commit is contained in:
parent
f261b68408
commit
743470c8f2
Notes:
sideshowbarker
2024-07-18 03:36:04 +09:00
Author: https://github.com/BenWiederhake Commit: https://github.com/SerenityOS/serenity/commit/743470c8f29 Pull-request: https://github.com/SerenityOS/serenity/pull/10154 Reviewed-by: https://github.com/alimpfard
2 changed files with 12 additions and 1 deletions
|
@ -210,7 +210,11 @@ public:
|
|||
template<typename... NewTs>
|
||||
friend struct Variant;
|
||||
|
||||
Variant() = delete;
|
||||
Variant() requires(!can_contain<Empty>()) = delete;
|
||||
Variant() requires(can_contain<Empty>())
|
||||
: Variant(Empty())
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef AK_HAS_CONDITIONALLY_TRIVIAL
|
||||
Variant(const Variant&) requires(!(IsCopyConstructible<Ts> && ...)) = delete;
|
||||
|
|
|
@ -219,3 +219,10 @@ TEST_CASE(copy_assign)
|
|||
EXPECT_EQ(the_value.get<String>(), "Hello, world!");
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE(default_empty)
|
||||
{
|
||||
Variant<Empty, int> my_variant;
|
||||
EXPECT(my_variant.has<Empty>());
|
||||
EXPECT(!my_variant.has<int>());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue