close
Espacios de nombres
Variantes

std::monostate

De cppreference.com
 
 
Biblioteca de servicios
 
 
<tbody> </tbody>
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.

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)

Funciones no miembro

<tbody> </tbody>
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; } constexpr bool operator>(monostate, monostate) noexcept { return false; } constexpr bool operator<=(monostate, monostate) noexcept { return true; } constexpr bool operator>=(monostate, monostate) noexcept { return true; }
(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.

Clases auxiliares

std::hash<std::monostate>

<tbody> </tbody>
template <> struct std::hash<monostate>;

Especializa el algoritmo std::hash para std::monostate.

Ejemplo

#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


Véase también

Construye el objeto variante.
(función miembro pública) [editar]