[PATCH] PR libstdc++/89728 diagnose some missuses of [locale.convenience] functions

Jonathan Wakely jwakely@redhat.com
Wed May 12 09:18:33 GMT 2021


On 11/05/21 21:00 +0100, Jonathan Wakely wrote:
>Alternatively, would it be even simpler to just define a partial
>specialization of ctype?
>
>template<typename _CharT, typename _Traits, typename _Alloc>
>  class ctype<basic_string<_CharT, _Traits, _Alloc> >
>  {
>#if __cplusplus >= 201103L
>      static_assert(something dependent,
>		    "std::basic_string used as a character type");
>#endif
>  private:
>    ctype();
>    ~ctype();
>  };
>
>This will work in C++98 too.

Or just leave it undefined, as libc++ seems to do according to your
comment in PR 89728:

error: implicit instantiation of undefined template 'std::__1::ctype<std::__1::basic_string<char> >'

Was your aim to have a static_assert that gives a more descriptive
error? We could leave it undefined in C++98 and have the static assert
for C++11 and up.



More information about the Libstdc++ mailing list