On 11/9/19 11:05 AM, JeanHeyd Meneide wrote:
On Sat, Nov 9, 2019 at 3:44 AM Lyberta <lyberta@lyberta.net> wrote:
> JeanHeyd Meneide:
>> Absolutely, the default should be basic_string.
> I disagree but I didn't write a proposal yet so we'll talk later.

Although here's one of the big arguments why std::basic_string is really
badly designed:


And then if we note that Unicode code units have almost zero semantics,
we can remove 80% of the API.

As a counterpoint, there's no reason you can't just ignore the vestigal API on std::string. While a "bloated" interface, long gone are the days where a function you write has to appear in your final binary, or even in your object files.

I understand it's not ideal, but remember that introducing new vocabulary types means you need to compete with every single API that currently takes std::string. That's a lot of APIs you're risking no compatibility with, and explicit conversions means the user has a lot of typing to do. Try to think about how expensive that can be for the user if you introduce new basic types, and the compatibility you lose with code being written even today.

You can still propose such types, but please do be careful: it might not be the best use of your time for something Library Evolution Working Group (Incubator) will likely shoot down immediately.

I'd like to add a strong +1 on this.  The committee is willing to deprecate things in rare cases.  I will say with near 100% confidence that WG21 will never deprecate std::basic_string or any significant portions of it due to extremely wide spread use.  WG21 is not in the business of producing a perfect, pure, or ideal language; we evaluate and make practical decisions based on impact to the entire community and ecosystem.  Please focus your attention on ideas that you know to have support from members of the groups that will evaluate it.  Otherwise, you will be wasting your time and the committee's time.



SG16 Unicode mailing list