<div dir="auto">These are plumbing for writing unicode algorithms portably, such as regex. I don&#39;t think they are something most users should interact with. As such, I think the wide contract is appropriate. It&#39;s reasonable for the binary properties to say false for non code point values. <div dir="auto"><br></div><div dir="auto">I also, on reflection, think excluding char and wchar is misguided. The contract is that char8 etc are utf-8 etc, but it&#39;s also frequently the case that the execution narrow and wide encodings are also unicode. That you have possible GIGO errors isn&#39;t a good reason to block possible correct use. It just encourages casting. </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 28, 2019, 05:10 Lyberta &lt;<a href="mailto:lyberta@lyberta.net">lyberta@lyberta.net</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt;&gt; I guess, but do we really want our users to shove random integers in it<br>
&gt;&gt;<br>
&gt; <br>
&gt; Yes. I really want a wide contract there<br>
<br>
But... why?<br>
<br>
&gt;&gt; Yes, contract or invariant means strong type, not dumb char32_t<br>
&gt;&gt;<br>
&gt; <br>
&gt; TR 44 is purposefully dumb by design too.<br>
<br>
I guess it was written by people with more of a C mindset. I&#39;m looking<br>
at std::chrono and love how I can never shove an integer there because<br>
it is ambiguous. Same with text - an integer is ambiguous without<br>
character set or encoding. I know this api has Unicode in its name<br>
but... I think I gotta try to come up with properties design that is<br>
compatible with my design and see if there are any bad points.<br>
<br>
Also, I know this is a bit obscure, but what about non-Unicode? I think<br>
having relatively universal free functions is fine and then if they get<br>
std::unicode_code_point as template parameter, they will select unicode<br>
implementation. Hence again, strong types are important.<br>
<br>
Also, consider std::ascii_character, std::shift_jis_something.. I don&#39;t<br>
know Shift-JIS. :/<br>
<br>
_______________________________________________<br>
SG16 Unicode mailing list<br>
<a href="mailto:Unicode@isocpp.open-std.org" target="_blank" rel="noreferrer">Unicode@isocpp.open-std.org</a><br>
<a href="http://www.open-std.org/mailman/listinfo/unicode" rel="noreferrer noreferrer" target="_blank">http://www.open-std.org/mailman/listinfo/unicode</a><br>
</blockquote></div>