[quoted.manip] only specifies that `operator<<`/`operator>>` is well-formed for operands with suitable types, and leaves it undefined whether they are SFINAE-friendly. Although it's worthwhile making them SFINAE-friendly, perhaps the SFINAE-friendliness should be considered as a libc++-specific choice at this moment. See LWG4364 for whether this should be considered portable.