std::monostate
De cppreference.com
<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
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
Véase también
| Construye el objeto variante. (función miembro pública) |