I did some research about defining explicit constructors (link1, link2, link3, link4, link5).
But for me it is still not obvious why std::list and std::iterator single argument constructors defined as explicit and in which practical case this definition may be helpful. Can you please bring some examples where this definition helps to avoid bugs. Thanks
explicit list(const _Alloc& _Al)
: _Mybase(_Al)
{ // construct empty list, allocator
}
explicit back_insert_iterator(_Container& _Cont)
: container(_STD addressof(_Cont))
{ // construct with container
}