std::optional
provides constructors that forwards arguments to the constructor of the owned object:
template<class...Args>
optional(in_place_t,Args&&...args)
But it also provides this overload:
template<class U,class...Args>
optional(in_place_t,initializer_list<U> l,Args&&...args)
What are the benefits of this last overload?