5
std::atomic_flag
を使用する場合は、エラーが発生しやすいATOMIC_FLAG_INIT
を使用して常に明示的に初期化するように注意する必要があります。しかし、デフォルトのコンストラクタがあります...だから、は、既定のコンストラクタを持っていて、未定義の状態でフラグを残すという客観的な理由はありますか?atomic_flagのデフォルトのコンストラクタが状態を未定義にする理由を教えてください。
AFAIKでは、デフォルトのコンストラクタは変数を0で初期化することが保証されていますが、0が "clear"または "set"を参照するかどうかは指定されていません。もちろん、これは答えよりも多くの質問を発生させます... – 5gon12eder
悲しいことに、これはcppreferenceによると、事例でもありません:* [ATOMIC_FLAG_INIT]はstd :: atomic_flagを特定の値に初期化する唯一の方法です。初期化は不特定です。しかし、私はそれがあなたの方法でそれを見ることが可能だと思います... – Synxis
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1379.htm – dyp