Apply LWG2390 from N4079.
Apply LWG2395 from N4079: "Preconditions: is defined nowhere"
Apply LWG2409 from N4079: "SFINAE-friendly common_type/iterator_traits should be removed from the fundamental-ts"
Apply N4078: "Fixes for optional objects"