Created on 2025-09-05.00:00:00 last changed 1 week ago
Currently, it is unspecified whether any of operator<< or operator>> for the "unspecified" return type of an I/O manipulating function is SFINAE-friendly.
There's implementation divergence. E.g. the following program is consistently rejected by implementations although the standard doesn't strictly require it to be ill-formed. Among the implementations, libstdc++ and libc++ make the failure SFINAE-friendly, while MSVC STL doesn't (demo):#include <iostream> #include <iomanip> int main() { std::cout << std::setfill(L'*'); }
It seems better to eliminate such implementation divergence. Perhaps it's also better to require them to be SFINAE-friendly to reduce potential conflicts with user-provided operators.
If it's intended to allow implementation divergence, perhaps we should clarify the intent.History | |||
---|---|---|---|
Date | User | Action | Args |
2025-09-05 00:00:00 | admin | create |