最終更新:2026-10-12
C++17 std::variant¶
最近、いくつか面白い問題を思いついたので、ちょっとしたまとめにしました。あなたはいくつ答えられるでしょうか?
注:完全な答えは星球で公開されます。
問題1:std::variantのコンストラクタはいくつの型の構築を呼び出しますか?1個?2個?n個?
関連する問題:
std::variantのデフォルト構築の動作はどのようになっていますか?std::variantに含まれる型がデフォルトコンストラクタを持たない場合、何が起きますか?std::variantの初期値の型はどのように指定しますか?
問題2:次のコードは正常に動作しますか?動作するならその理由を説明し、しないならいくつかの解決策を示してください。
struct X {
X(int v) : v_(v) {}
int v_;
};
struct Y {
Y(double v) : v_(v) {}
double v_;
};
std::variant<X, Y> a1;
関連する問題:
- デフォルトコンストラクタを持つ型を
std::variantに追加するにはどうしますか? std::variantの型リストにデフォルトコンストラクタがない場合、どのような解決策がありますか?- デフォルト構築の問題を避けるために、
std::variantを明示的に構築するにはどうしますか?
問題3:monostateとは何で、どんな問題を解決しますか?
関連する問題:
std::variantの中でstd::monostateを使うにはどうしますか?std::monostateの導入はstd::variantの設計にどのような影響を与えますか?- どのような場合に
std::monostateを使うのが適切ですか?
問題4:defer_lock_t、try_to_lock_t、adopt_lock_tの3つの違いは何ですか?どんな場面で使いますか?
関連する問題:
defer_lock_tの使用場面と実装メカニズムはどのようなものですか?try_to_lock_tはミューテックスのロック試行をどのように扱いますか?adopt_lock_tで既存のロックの所有権を引き継ぐとき、どんな注意点がありますか?
関連トピック¶
- C++17 [[nodiscard]] 属性 | C++那些事
- C++17 std::string_view | C++那些事
- C++17 PMR メモリリソース | C++那些事
- C++17 17の高度な機能 | C++那些事
- C++17 クラステンプレートのテンプレート引数推論 CTAD | C++那些事
- C++17 optional_ref | C++那些事
- C++17 構造化束縛 | C++那些事
- C++17 テンプレート auto 推論 | C++那些事
- C++17 変数テンプレート | C++那些事