<div dir="ltr"><div dir="ltr">On Sat, Nov 9, 2019 at 3:44 AM Lyberta <<a href="mailto:lyberta@lyberta.net" target="_blank">lyberta@lyberta.net</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Lyberta:<br>
> JeanHeyd Meneide:<br>
>> Absolutely, the default should be basic_string.<br>
> <br>
> I disagree but I didn't write a proposal yet so we'll talk later.<br>
<br>
Although here's one of the big arguments why std::basic_string is really<br>
badly designed:<br>
<br>
<a href="http://www.gotw.ca/gotw/084.htm" rel="noreferrer" target="_blank">http://www.gotw.ca/gotw/084.htm</a><br>
<br>
And then if we note that Unicode code units have almost zero semantics,<br>
we can remove 80% of the API.<br></blockquote><div><br></div><div>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.<br><br></div><div>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.<br></div><div><br></div><div>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.<br><br></div><div>Sincerely,<br></div><div>JeanHeyd<br></div></div></div>