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 [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id B14BD3858280 for ; Mon, 10 Oct 2022 20:38:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B14BD3858280 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665434332; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=r/iiO2yMzQGozGYS2Ku4lHvePjxJ329AfAZWV8U9tIg=; b=TmbCsGCU7vUqWwxQK3c8dXBRCtDS9y5ZogOVkhRozldVru1Mi+ivVdDpSzy2CRgoKG86/C OnJcHYYA8kET0I7G3JT3eF37ZTvPZStQYmfxeiJhyYHaOxas/Zt2wL6k2OsKErzVy1o4Ts k2BKey/i6O2ir/Wjxj0On/PcZmq4sds= Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-670-WEwTutM6MdW-OF35UJckIw-1; Mon, 10 Oct 2022 16:38:48 -0400 X-MC-Unique: WEwTutM6MdW-OF35UJckIw-1 Received: by mail-qt1-f199.google.com with SMTP id b12-20020a05622a020c00b003983950639bso3821530qtx.16 for ; Mon, 10 Oct 2022 13:38:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=r/iiO2yMzQGozGYS2Ku4lHvePjxJ329AfAZWV8U9tIg=; b=NpnxhwI7ytiVvUyl6++MW2A4xLjKfTp5XXdy9onVGyK2b/zDUtYLgOfj0Dag/yXxlx Nx9flihf9m1pwQsxWQLQIy++3wmRTHmRd4Wc4SyJmp/72cD+OlQyblEtOa3/GacmEpL8 a6f9WhyHTsXZLxSg1v75AL6KqsMSjTIF4OJ4BxUhfsochWzTmCxOfCpo3hxForST27b0 OBI2A055zX2e/tMv8QOxjrBhI8M+TOFtqUYhIDE59gm+gdSWCGcD3JVhFG4NO0rTVY36 mYqvzqKeft5znfZb2kcRvdaIaZFIXr3K1aWoLnUAXEjSHDy6PJ+lMIo9eiP3uGE/0m/0 QtTg== X-Gm-Message-State: ACrzQf1hed1cQUm/G66X8Yn7BvL74YJGXkHzrdi/B3IDqo9nCyC2wfbg dAFu8XQEqI52YvKMJSo5NEsD8Ao+DFDpRrqH+MwZGphWifUpBcT0oHe/jZX68GFqqCDX8DrdFRj GyoBf2W2ErGRfCh3MbtkoQqBJPbPSnVs= X-Received: by 2002:ad4:5deb:0:b0:4b1:d1cc:7cef with SMTP id jn11-20020ad45deb000000b004b1d1cc7cefmr16023592qvb.124.1665434328075; Mon, 10 Oct 2022 13:38:48 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6osovU2+BCuKBSBiFmLp7EaVFbjLYQ4pDz060rRylroT5rT9u3H11Vn3NoPbLebSpiw4ePulZTX7a1rxYAtC8= X-Received: by 2002:ad4:5deb:0:b0:4b1:d1cc:7cef with SMTP id jn11-20020ad45deb000000b004b1d1cc7cefmr16023578qvb.124.1665434327824; Mon, 10 Oct 2022 13:38:47 -0700 (PDT) MIME-Version: 1.0 References: <20221010112005.1523979-1-jwakely@redhat.com> <5ff9237f-9298-0964-d61b-58313ae32348@idea> In-Reply-To: From: Jonathan Wakely Date: Mon, 10 Oct 2022 21:38:36 +0100 Message-ID: Subject: Re: [committed] libstdc++: std::make_signed_t should be ill-formed To: Tim Song Cc: Patrick Palka , libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="00000000000082090005eab42559" X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000082090005eab42559 Content-Type: text/plain; charset="UTF-8" On Mon, 10 Oct 2022 at 15:05, Jonathan Wakely wrote: > > On Mon, 10 Oct 2022 at 14:50, Tim Song via Libstdc++ > wrote: > > > > On Mon, Oct 10, 2022 at 8:09 AM Patrick Palka via Libstdc++ > > wrote: > > > > > > On Mon, 10 Oct 2022, Jonathan Wakely via Libstdc++ wrote: > > > > > > > Tested powerpc64le-linux. Pushed to trunk. > > > > > > > > -- >8 -- > > > > > > > > Currently we only reject std::make_signed_t but not cv bool. > > > > Similarly for std::make_unsigned_t. > > > > > > > > As well as making those ill-formed, this adds a requires-clause to the > > > > make_signed and make_unsigned primary templates. This makes > > > > non-integral, non-enum cases fail immediately with a clear error, rather > > > > than giving an error about __make_signed_selector being > > > > incomplete. > > > > > > IIUC the requires-clause turns what was once a hard error into a SFINAE > > > error, so e.g. for > > > > > > template typename make_signed::type f(int); > > > template void f(...); > > > int main() { f(0); } > > > > > > the call to f would previously be rejected due to an error outside the > > > immediate context about incomplete __make_signed_selector, and now with > > > the requires-clause resolves to the second overload. I wonder if this > > > new behavior is conforming -- the examples in [structure.specifications] > > > of how to implement 'Mandates' suggest that a failed 'Mandates' should > > > yield a hard error? > > > > I'm also concerned about the inability to name make_signed in a > > context that doesn't require its instantiation (e.g., > > conditional_t, make_signed, > > type_identity>::type). That seems a plausible use case, and > > breaking it doesn't seem great to me (conformance aside). > > Ah yes, that's a problem. > > We could fix it like this: > > template > struct make_unsigned; > > template > #if __cpp_concepts > requires is_integral<_Tp>::value || __is_enum(_Tp) > struct make_unsigned<_Tp> > #else > struct make_unsigned > #endif > { typedef typename __make_unsigned_selector<_Tp>::__type type; }; > > But that doesn't really improve the diagnostic much. It's simpler > just to revert the addition of the constraints. Reverted like so. Tested powerpc64le-linux, pushed to trunk. --00000000000082090005eab42559 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l938kpcz0 Y29tbWl0IDFkMmYwN2VkNGNlMDI4YTdjMWY5YjE4ZjVkOTU5ZjMwMjEzNTQ1Y2EKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBNb24gT2N0IDEwIDE1 OjA2OjUzIDIwMjIKCiAgICBsaWJzdGRjKys6IFJldmVydCBhZGRpdGlvbiBvZiBjb25zdHJhaW50 cyB0byBtYWtlX3NpZ25lZC9tYWtlX3Vuc2lnbmVkCiAgICAKICAgIENvbnN0cmFpbmluZyB0aGUg cHJpbWFyeSB0ZW1wbGF0ZSBtYWtlcyBpdCB1bnVzYWJsZSBpbiB1bmluc3RhbnRpYXRlZAogICAg Y29udGV4dHMuCiAgICAKICAgIGxpYnN0ZGMrKy12My9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAg ICAgKiBpbmNsdWRlL3N0ZC90eXBlX3RyYWl0cyAobWFrZV9zaWduZWQsIG1ha2VfdW5zaWduZWQp OiBSZW1vdmUKICAgICAgICAgICAgY29uc3RyYWludHMgb24gcHJpbWFyeSB0ZW1wbGF0ZS4KICAg ICAgICAgICAgKiB0ZXN0c3VpdGUvMjBfdXRpbC9tYWtlX3NpZ25lZC9yZXF1aXJlbWVudHMvdHlw ZWRlZnNfbmVnLmNjOgogICAgICAgICAgICBVbmRvIGNoYW5nZXMgdG8gZXhwZWN0ZWQgZXJyb3Ig aW4gQysrMjAgbW9kZS4KICAgICAgICAgICAgKiB0ZXN0c3VpdGUvMjBfdXRpbC9tYWtlX3Vuc2ln bmVkL3JlcXVpcmVtZW50cy90eXBlZGVmc19uZWcuY2M6CiAgICAgICAgICAgIExpa2V3aXNlLgog ICAgICAgICAgICAqIHRlc3RzdWl0ZS8yNF9pdGVyYXRvcnMvcmFuZ2VfYWNjZXNzL3JhbmdlX2Fj Y2Vzc19jcHAyMF9uZWcuY2M6CiAgICAgICAgICAgIExpa2V3aXNlLgogICAgICAgICAgICAqIHRl c3RzdWl0ZS8yMF91dGlsL21ha2Vfc2lnbmVkL3JlcXVpcmVtZW50cy91bmluc3RhbnRpYXRlZC5j YzoKICAgICAgICAgICAgTmV3IHRlc3QuCiAgICAgICAgICAgICogdGVzdHN1aXRlLzIwX3V0aWwv bWFrZV91bnNpZ25lZC9yZXF1aXJlbWVudHMvdW5pbnN0YW50aWF0ZWQuY2M6CiAgICAgICAgICAg IE5ldyB0ZXN0LgoKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC90eXBlX3Ry YWl0cyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC90eXBlX3RyYWl0cwppbmRleCA2MTA4Yjk4 YWE2YS4uMWQ3YzNiMDRhMGUgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC90 eXBlX3RyYWl0cworKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvdHlwZV90cmFpdHMKQEAg LTE4MDIsOSArMTgwMiw2IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIC8v IFByaW1hcnkgdGVtcGxhdGUuCiAgIC8vLyBtYWtlX3Vuc2lnbmVkCiAgIHRlbXBsYXRlPHR5cGVu YW1lIF9UcD4KLSNpZiBfX2NwcF9jb25jZXB0cwotICAgIHJlcXVpcmVzIGlzX2ludGVncmFsPF9U cD46OnZhbHVlIHx8IF9faXNfZW51bShfVHApCi0jZW5kaWYKICAgICBzdHJ1Y3QgbWFrZV91bnNp Z25lZAogICAgIHsgdHlwZWRlZiB0eXBlbmFtZSBfX21ha2VfdW5zaWduZWRfc2VsZWN0b3I8X1Rw Pjo6X190eXBlIHR5cGU7IH07CiAKQEAgLTE5MzcsOSArMTkzNCw2IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAgIC8vIFByaW1hcnkgdGVtcGxhdGUuCiAgIC8vLyBtYWtlX3Np Z25lZAogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+Ci0jaWYgX19jcHBfY29uY2VwdHMKLSAgICBy ZXF1aXJlcyBpc19pbnRlZ3JhbDxfVHA+Ojp2YWx1ZSB8fCBfX2lzX2VudW0oX1RwKQotI2VuZGlm CiAgICAgc3RydWN0IG1ha2Vfc2lnbmVkCiAgICAgeyB0eXBlZGVmIHR5cGVuYW1lIF9fbWFrZV9z aWduZWRfc2VsZWN0b3I8X1RwPjo6X190eXBlIHR5cGU7IH07CiAKZGlmZiAtLWdpdCBhL2xpYnN0 ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9tYWtlX3NpZ25lZC9yZXF1aXJlbWVudHMvdHlwZWRl ZnNfbmVnLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL21ha2Vfc2lnbmVkL3Jl cXVpcmVtZW50cy90eXBlZGVmc19uZWcuY2MKaW5kZXggODhiOGFlODg3ZWYuLjQ1MWVlYjhjOTJk IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvbWFrZV9zaWduZWQv cmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRl LzIwX3V0aWwvbWFrZV9zaWduZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYwpAQCAtNDMs NSArNDMsNCBAQCB2b2lkIHRlc3QwMSgpCiAgIHVzaW5nIFQ4ID0gbWFrZV9zaWduZWQ8ZmxvYXQ+ Ojp0eXBlOyAvLyB7IGRnLWVycm9yICJoZXJlIiB9CiB9CiAKLS8vIHsgZGctZXJyb3IgImludmFs aWQgdXNlIG9mIGluY29tcGxldGUgdHlwZSIgIiIgeyB0YXJnZXQgYysrMTdfZG93biB9IDAgfQot Ly8geyBkZy1lcnJvciAiY29uc3RyYWludCBmYWlsdXJlIiAiIiB7IHRhcmdldCBjKysyMCB9IDAg fQorLy8geyBkZy1lcnJvciAiaW52YWxpZCB1c2Ugb2YgaW5jb21wbGV0ZSB0eXBlIiAiIiB7IHRh cmdldCAqLSotKiB9IDAgfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91 dGlsL21ha2Vfc2lnbmVkL3JlcXVpcmVtZW50cy91bmluc3RhbnRpYXRlZC5jYyBiL2xpYnN0ZGMr Ky12My90ZXN0c3VpdGUvMjBfdXRpbC9tYWtlX3NpZ25lZC9yZXF1aXJlbWVudHMvdW5pbnN0YW50 aWF0ZWQuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNmYWNmMGM1 OTVhCi0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL21h a2Vfc2lnbmVkL3JlcXVpcmVtZW50cy91bmluc3RhbnRpYXRlZC5jYwpAQCAtMCwwICsxLDggQEAK Ky8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysxMSB9IH0KKyNpbmNsdWRlIDx0eXBlX3Ry YWl0cz4KKworLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbmFtZSBpbnZhbGlkIHNwZWNpYWxpemF0aW9u cywganVzdCBkb24ndCBpbnN0YW50aWF0ZSB0aGVtLgorCit1c2luZyBYID0gc3RkOjptYWtlX3Np Z25lZDxmbG9hdD47Cit1c2luZyBZID0gc3RkOjptYWtlX3NpZ25lZDxib29sPjsKK3VzaW5nIFog PSBzdGQ6Om1ha2Vfc2lnbmVkPHZvaWQ+OwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3Rz dWl0ZS8yMF91dGlsL21ha2VfdW5zaWduZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9tYWtlX3Vuc2lnbmVkL3JlcXVpcmVtZW50 cy90eXBlZGVmc19uZWcuY2MKaW5kZXggNTBmMTVlNzAzN2MuLjQ5ZDUyMDkzNmEzIDEwMDY0NAot LS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvbWFrZV91bnNpZ25lZC9yZXF1aXJl bWVudHMvdHlwZWRlZnNfbmVnLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRp bC9tYWtlX3Vuc2lnbmVkL3JlcXVpcmVtZW50cy90eXBlZGVmc19uZWcuY2MKQEAgLTQzLDUgKzQz LDQgQEAgdm9pZCB0ZXN0MDEoKQogICB1c2luZyBUOCA9IG1ha2VfdW5zaWduZWQ8ZmxvYXQ+Ojp0 eXBlOyAvLyB7IGRnLWVycm9yICJoZXJlIiB9CiB9CiAKLS8vIHsgZGctZXJyb3IgImludmFsaWQg dXNlIG9mIGluY29tcGxldGUgdHlwZSIgIiIgeyB0YXJnZXQgYysrMTdfZG93biB9IDAgfQotLy8g eyBkZy1lcnJvciAiY29uc3RyYWludCBmYWlsdXJlIiAiIiB7IHRhcmdldCBjKysyMCB9IDAgfQor Ly8geyBkZy1lcnJvciAiaW52YWxpZCB1c2Ugb2YgaW5jb21wbGV0ZSB0eXBlIiAiIiB7IHRhcmdl dCAqLSotKiB9IDAgfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGls L21ha2VfdW5zaWduZWQvcmVxdWlyZW1lbnRzL3VuaW5zdGFudGlhdGVkLmNjIGIvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMF91dGlsL21ha2VfdW5zaWduZWQvcmVxdWlyZW1lbnRzL3VuaW5zdGFu dGlhdGVkLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45Yjg2MDk2 NzM3OQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9t YWtlX3Vuc2lnbmVkL3JlcXVpcmVtZW50cy91bmluc3RhbnRpYXRlZC5jYwpAQCAtMCwwICsxLDgg QEAKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysxMSB9IH0KKyNpbmNsdWRlIDx0eXBl X3RyYWl0cz4KKworLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbmFtZSBpbnZhbGlkIHNwZWNpYWxpemF0 aW9ucywganVzdCBkb24ndCBpbnN0YW50aWF0ZSB0aGVtLgorCit1c2luZyBYID0gc3RkOjptYWtl X3Vuc2lnbmVkPGZsb2F0PjsKK3VzaW5nIFkgPSBzdGQ6Om1ha2VfdW5zaWduZWQ8Ym9vbD47Cit1 c2luZyBaID0gc3RkOjptYWtlX3Vuc2lnbmVkPHZvaWQ+OwpkaWZmIC0tZ2l0IGEvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yNF9pdGVyYXRvcnMvcmFuZ2VfYWNjZXNzL3JhbmdlX2FjY2Vzc19jcHAy MF9uZWcuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzI0X2l0ZXJhdG9ycy9yYW5nZV9hY2Nl c3MvcmFuZ2VfYWNjZXNzX2NwcDIwX25lZy5jYwppbmRleCAyNmM4YWUwZWUxZS4uYzA4MjVhNTg1 ODcgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjRfaXRlcmF0b3JzL3Jhbmdl X2FjY2Vzcy9yYW5nZV9hY2Nlc3NfY3BwMjBfbmVnLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvMjRfaXRlcmF0b3JzL3JhbmdlX2FjY2Vzcy9yYW5nZV9hY2Nlc3NfY3BwMjBfbmVnLmNj CkBAIC00Niw1ICs0Niw0IEBAIHRlc3QwMygpCiAgIEMgYzsKICAgc3RkOjpzc2l6ZShjKTsgIC8v IHsgZGctZXJyb3IgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIiB9CiB9Ci0vLyB7IGRnLWVycm9yICJp bmNvbXBsZXRlIHR5cGUgLiptYWtlX3NpZ25lZC4qUyIgIiIgeyB0YXJnZXQgYysrMTdfZG93biB9 IDAgfQotLy8geyBkZy1lcnJvciAiY29uc3RyYWludCBmYWlsdXJlIiAiIiB7IHRhcmdldCBjKysy MCB9IDAgfQorLy8geyBkZy1lcnJvciAiaW5jb21wbGV0ZSB0eXBlIC4qbWFrZV9zaWduZWQuKlMi ICIiIHsgdGFyZ2V0ICotKi0qIH0gMCB9Cg== --00000000000082090005eab42559--