<div dir="ltr"><div dir="ltr">Hi,<div><br></div><div>I'm considering submitting a bug report against libc++, but thought I would check here first.</div><div><br></div><div>The standard gives a synopsis for the locale facet std::ctype<CharT> in Section 25.4.1 (C++17, but it is also in C++11), and std::numpunct<CharT> in Section 25.4.3.  Under libc++ specialisations of these templates are defined for char and wchar_t (in header '__locale') but the base template definition is omitted.  This means in particular that I cannot define:</div><div><br></div><div>class my_ctype : public std::ctype<char16_t> { ... };</div><div><br></div><div><div style="color:rgb(0,0,0)">class my_numpunct : public std::numpunct<char16_t> { ... };</div></div><div style="color:rgb(0,0,0)"><br></div><div style="color:rgb(0,0,0)">This seems to go against the intent of these classes, which include abstract virtual function declarations.  Although clause 30.2.2 restricts the support for stream-based I/O that an implementation must provide to the types char and wchar_t, it is not clear to me that this means the definitions of the above templates can be omitted.</div><div style="color:rgb(0,0,0)"><br></div><div style="color:rgb(0,0,0)">I would appreciate advice as to: a. whether this is actually an issue or my misreading of the spec; and b. if so, if it is a known issue.</div><div style="color:rgb(0,0,0)"><br></div><div style="color:rgb(0,0,0)">Thanks a lot!</div><div style="color:rgb(0,0,0)">James</div></div></div>