LWG-3627 Inconsistent specifications for `std::make_optional` overloads
LWG-3627 Inconsistent specifications for std::make_optional overloads
I believe the resolution was speculatively implemented in #2607. https://github.com/microsoft/STL/blob/ab6dec6d85c90b272d219ba60da4478b169b72b4/stl/inc/optional#L983
However, in C++26 this overload is additionally constrained ([optional.specalg]/3), and thus it's unclear to me whether such wording change still introduces implicit SFINAE constraints.
Thanks, then we just need to remove the comments.
I don't understand "Constraints: The call to make_optional does not use an explicit template-argument-list that begins with a type template-argument." at all. How is that even implementable? That sounds like a user restriction.
Thanks, then we just need to remove the comments.
I don't understand "Constraints: The call to
make_optionaldoes not use an explicit template-argument-list that begins with a type template-argument." at all. How is that even implementable? That sounds like a user restriction.
With something like template<int = 0, class T>. The point is to make make_optional<T>(x) always go to one of the other two overloads.