CETL 0.0.0
 
Loading...
Searching...
No Matches
Example 9: Using CETL's variant

Full example for cetl::variant

#include <string>
#include <algorithm>
#include <iostream>
#include <gtest/gtest.h>
TEST(example_09_variant, basic_usage)
{
v = 42; // v contains int
EXPECT_EQ(42, i);
w = cetl::pf17::get<0>(v); // same effect as the previous line
w = v; // same effect as the previous line
// cetl::pf17::get<double>(v); // error: no double in [int, float]
// cetl::pf17::get<3>(v); // error: valid index values are 0 and 1
float* result = cetl::pf17::get_if<float>(&w); // w contains int, not float: will return null NOLINT(*-use-auto)
std::cout << "get_if<float>(&w) => " << result << '\n';
using namespace std::literals;
// converting constructors work when unambiguous
x = "def"; // converting assignment also works when unambiguous
// casts to void const * when passed a char const *
y = "xyz"s;
}
An implementation of std::variant.
Definition variant.hpp:839
CETL_NODISCARD constexpr bool holds_alternative(const variant< Ts... > &var) noexcept
Implementation of std::holds_alternative.
Definition variant.hpp:1123
CETL_NODISCARD constexpr std::add_pointer_t< variant_alternative_t< Ix, variant< Ts... > > > get_if(variant< Ts... > *const var) noexcept
Implementation of std::get_if(std::variant).
Definition variant.hpp:1133
CETL_NODISCARD constexpr variant_alternative_t< Ix, variant< Ts... > > & get(variant< Ts... > &var)
Implementation of std::get(std::variant).
Definition variant.hpp:1161
Defines the C++17 std::variant type and several related entities.