std::monostate
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <variant> で定義
|
||
struct monostate { }; |
(C++17以上) | |
std::variant で行儀の良い空の選択肢として使うことが意図された単位型です。 特に、デフォルト構築可能でない型の variant は、 std::monostate をその最初の選択肢に持つことで、デフォルト構築可能になります。
メンバ関数
コンストラクタ (暗黙に宣言) |
トリビアルな暗黙のデフォルト/コピー/ムーブコンストラクタ (パブリックメンバ関数) |
デストラクタ (暗黙に宣言) |
トリビアルな暗黙のデストラクタ (パブリックメンバ関数) |
operator= (暗黙に宣言) |
トリビアルな暗黙のコピー/ムーブ代入演算子 (パブリックメンバ関数) |
非メンバ関数
<tbody> </tbody>
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; } constexpr bool operator>(monostate, monostate) noexcept { return false; } constexpr bool operator<=(monostate, monostate) noexcept { return true; } constexpr bool operator>=(monostate, monostate) noexcept { return true; } |
(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>
<tbody> </tbody> 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 オブジェクトを構築します (パブリックメンバ関数) |