This is not ready to be committed. However, it is (I believe) a full implementation of P0254R1, and I'm looking for feedback.
A couple of things to note:
- This is a very large patch, but most of the changes are new tests.
- I've moved a bunch of stuff around, and sunk common stuff in a new header <__string>.
- Though string_view is a C++17 feature, I've made it available all the way back to C++03. Otherwise, the integration with <string> gets really painful.
- Some of the routines taking a`string_view` are marked as inline where the corresponding string ones are not, because string and wstring are explicitly instantiated in the dylib, and if they aren't inline, you'll need a new dylib. Example: basic_string& assign(const basic_string& __str, size_type __pos, size_type __n=npos); is not inline, but basic_string& assign(basic_string_view __sv, size_type pos, size_type n=npos); is.
This declaration should be exposed in all dialects since parts of iomanip depend on it.