ミューテックスを取るコンストラクターのオーバーロードがマークされていることがわかりますexplicit
。そのように指定する理由がわかりません。ミューテックスから対応する への暗黙的な変換を許可しても害はないと思いますstd::unique_lock
。これは実際に便利です。たとえば、void func_a(std::unique_lock<std::mutex> lock)
andが与えられた場合、likestd::mutex mut
を直接呼び出すことができます。通話に関して潜在的な害は何ですか? ユーザーを驚かせるような効果はないと思います。したがって、問題は次のとおりです。コンストラクターをマークする理由は何ですか?func_a
mut
func_a(mut)
func_a(mut)
explicit