From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id E7FF3385780B for ; Wed, 12 May 2021 09:18:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E7FF3385780B Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-437-V5vICUu7MDGc4XLDUwwhkQ-1; Wed, 12 May 2021 05:18:36 -0400 X-MC-Unique: V5vICUu7MDGc4XLDUwwhkQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C67E01854E24; Wed, 12 May 2021 09:18:34 +0000 (UTC) Received: from localhost (unknown [10.33.36.164]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5E8E42B59A; Wed, 12 May 2021 09:18:34 +0000 (UTC) Date: Wed, 12 May 2021 10:18:33 +0100 From: Jonathan Wakely To: Antony Polukhin Cc: libstdc++ , gcc-patches List Subject: Re: [PATCH] PR libstdc++/89728 diagnose some missuses of [locale.convenience] functions Message-ID: <20210512091833.GA3008@redhat.com> References: <20210511200031.GZ3008@redhat.com> MIME-Version: 1.0 In-Reply-To: <20210511200031.GZ3008@redhat.com> X-Clacks-Overhead: GNU Terry Pratchett X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 May 2021 09:18:41 -0000 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 > class ctype > > { >#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 >' 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.