std::monostate
提供: cppreference.com
ヘッダ <variant> で定義
|
||
struct monostate { }; |
(C++17以上) | |
std::variant で行儀の良い空の選択肢として使うことが意図された単位型���す。 特に、デフォルト構築可能でない型の variant は、 std::monostate
をその最初の選択肢に持つことで、デフォルト構築可能になります。
目次 |
[編集] メンバ関数
コンストラクタ (暗黙に宣言) |
トリビアルな暗黙のデフォルト/コピー/ムーブコンストラクタ (パブリックメンバ関数) |
デストラクタ (暗黙に宣言) |
トリビアルな暗黙のデストラクタ (パブリックメンバ関数) |
operator= (暗黙に宣言) |
トリビアルな暗黙のコピー/ムーブ代入演算子 (パブリックメンバ関数) |
[編集] 非メンバ関数
constexpr bool operator==(monostate, monostate) noexcept { return true; } |
(C++17以上) | |
constexpr bool operator!=(monostate, monostate) noexcept { return false; } constexpr bool operator<(monostate, monostate) noexcept { return false; } |
(C++17以上) (C++20未満) |
|
constexpr std::strong_ordering operator<=>(monostate, monostate) noexcept { return std::strong_ordering::equal; } |
(C++20以上) | |
std::monostate
のすべてのインスタンスは等しいものとして比較されます。
[編集] ヘルパークラス
std::hash<std::monostate>
template <> struct std::hash<monostate>; |
||
std::monostate
に対する std::hash アルゴリズムの特殊化
[編集] 例
Run this code
#include <variant> #include <iostream> struct S { S(int i) : i(i) {} int i; }; int main() { // Without the monostate type this declaration will fail. // This is because S is not default-constructible. std::variant<std::monostate, S> var; // var.index() is now 0 - the first element // std::get<S> will throw! We need to assign a value var = 12; std::cout << std::get<S>(var).i << '\n'; }
出力:
12
[編集] 関連項目
variant オブジェクトを構築します (パブリックメンバ関数) |