std::bad_variant_access(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… std::bad_variant_access β€” NAME πŸ’…

okay so bestie, this is std::bad_variant_access(3) from the C++ Standard Libary manual, and it's giving β€œexception type with main character energy” βœ¨πŸŽ€.

std::bad_variant_access - std::bad_variant_access


✨ Synopsis ✨

Defined in header <variant>
class bad_variant_access : public std::exception  (since C++17)

std::bad_variant_access is the type of the exception thrown in the following situations:

  • std::get(std::variant) called with an index or type that does not match the currently active alternative.
  • std::visit called to visit a variant that is valueless_by_exception.

🧚 Member functions 🧚

  • constructor β€” constructs a new bad_variant_access object (public member function)
  • operator= β€” replaces the bad_variant_access object (public member function)
  • what β€” returns the explanatory string (public member function)

πŸŽ€ std::bad_variant_access::bad_variant_access πŸŽ€

bad_variant_access() noexcept;                                  (1)
(since C++17)
bad_variant_access( const bad_variant_access& other ) noexcept; (2)
(since C++17)

Constructs a new bad_variant_access object with an implementation-defined null-terminated byte string which is accessible through what().

  1. Default constructor.
  2. Copy constructor. If *this and other both have dynamic type std::bad_variant_access then std::strcmp(what(), other.what()) == 0.

Parameters

other - another exception object to copy


πŸ’… std::bad_variant_access::operator= πŸ’…

bad_variant_access& operator=( const bad_variant_access& other )
noexcept;

(since C++17)

Assigns the contents with those of other. If *this and other both have dynamic type std::bad_variant_access then std::strcmp(what(), other.what()) == 0 after assignment.

Parameters

other - another exception object to assign with

Return value

*this


πŸ¦‹ std::bad_variant_access::what πŸ¦‹

virtual const char* what() const noexcept;  (since C++17)

Returns the explanatory string.

Parameters

(none)

Return value

Pointer to a null-terminated string with explanatory information. The string is suitable for conversion and display as a std::wstring. The pointer is guaranteed to be valid at least until the exception object from which it is obtained is destroyed, or until a non-const member function (e.g. copy assignment operator) on the exception object is called.


πŸ“ Notes πŸ“

Implementations are allowed but not required to override what().


🌈 Inherited from std::exception 🌈

Member functions

  • destructor β€” destroys the exception object [virtual] (virtual public member function of std::exception)
  • what β€” returns an explanatory string [virtual] (virtual public member function of std::exception)

πŸ§ͺ Example πŸ§ͺ

// Run this code

#include <iostream>
#include <variant>

int main()
{
    std::variant<int, float> v;
    v = 12;
    try
    {
        std::get<float>(v);
    }
    catch (const std::bad_variant_access& e)
    {
        std::cout << e.what() << '\n';
    }
}

✨ Possible output ✨

bad_variant_access

πŸ‘€ See also πŸ‘€

  • get(std::variant) β€” reads the value of the variant given the index or the type (if the type is unique), throws on error (function template) (C++17)
  • visit β€” calls the provided functor with the arguments held by one or more variants (function template) (C++17)

mwah πŸ’‹ that's the whole page, bestie. source: http://cppreference.com, version/date: 2024.06.10, page: std::bad_variant_access(3) 🫢✨

πŸ“¦ where this page comes from