Jlm
Loading...
Searching...
No Matches
MatchVariantTests.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2026 Helge Bahmann <hcb@chaoticmind.net>
3 * See COPYING for terms of redistribution.
4 */
5
6#include <gtest/gtest.h>
7
9
10namespace
11{
12
13using TestVariant = std::variant<int, std::string>;
14
15std::string
16Discriminate(const TestVariant & v)
17{
19 v,
20 [](const int & n)
21 {
22 return "int:" + std::to_string(n);
23 },
24 [](const std::string & s)
25 {
26 return "str:" + s;
27 });
28}
29
30}
31
32TEST(MatchVariantTests, TestVariants)
33{
34 EXPECT_EQ(Discriminate(TestVariant(42)), "int:42");
35 EXPECT_EQ(Discriminate(TestVariant("foo")), "str:foo");
36}
TEST(MatchVariantTests, TestVariants)
decltype(auto) MatchVariant(T &&obj, Fns &&... fns)
Pattern match over variant.