Я вижу, что перегрузка конструктора, который принимает мьютекс помечен explicit
, Я не вижу смысла указывать это так. Я думаю, что нет ничего плохого в том, чтобы разрешить неявное преобразование из мьютекса в соответствующий std::unique_lock
, Это действительно может быть удобно. Например, учитывая void func_a(std::unique_lock<std::mutex> lock)
а также std::mutex mut
мы могли бы напрямую ссылаться func_a
на mut
лайк func_a(mut)
, Какой может быть потенциальный вред по отношению к вызову func_a(mut)
? Я не думаю, что есть какой-либо эффект, который может удивить пользователя. Итак, вопрос в том, что является обоснованием маркировки конструктора. explicit
?
Задача ещё не решена.
Других решений пока нет …