std::monostate
De cppreference.com
Definido en el archivo de encabezado <variant>
|
||
struct monostate { }; |
(desde C++17) | |
Tipo de unidad destinado a usarse como una alternativa vacía de buen comportamiento en std::variant. En particular, un variante de tipos no construibles por defecto puede incluir std::monostate
como su primera alternativa: esto hace que el variante en sí mismo sea construible por defecto.
Contenido |
[editar] Funciones miembro
(constructor) (implícitamente declarado) |
Constructor trivial implícito por defecto/de copia/de movimiento. (función miembro pública) |
(destructor) (implícitamente declarado) |
Destructor trivial implícito. (función miembro pública) |
operator= (implícitamente declarado) |
Operador de asignación trivial implícito de copia/de movimiento. (función miembro pública) |
[editar] Funciones no miembro
constexpr bool operator==(monostate, monostate) noexcept { return true; } |
(desde C++17) | |
constexpr bool operator!=(monostate, monostate) noexcept { return false; } constexpr bool operator<(monostate, monostate) noexcept { return false; } |
(desde C++17) (hasta C++20) |
|
constexpr std::strong_ordering operator<=>(monostate, monostate) noexcept { return std::strong_ordering::equal; } |
(desde C++20) | |
Todas las instancias de std::monostate
se comparan iguales.
[editar] Clases auxiliares
std::hash<std::monostate>
template <> struct std::hash<monostate>; |
||
Especializa el algoritmo std::hash para std::monostate
.
[editar] Ejemplo
Ejecuta este código
#include <variant> #include <iostream> struct S { S(int i) : i(i) {} int i; }; int main() { // Sin el tipo monostate esta declaración fallaría. // Esto es porque S no es construible por defecto. std::variant<std::monostate, S> var; // var.index() ahora es 0 - el primer elemento // std::get<S> lanzará! Necesitamos asignar un valor var = 12; std::cout << std::get<S>(var).i << '\n'; }
Salida:
12
[editar] Véase también
Construye el objeto variante. (función miembro pública) |