From patchwork Fri Dec 20 20:48:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 103538 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 99EBE3858C39 for ; Fri, 20 Dec 2024 20:49:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 99EBE3858C39 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=F7ihLE8S X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) by sourceware.org (Postfix) with ESMTPS id 0E6233858C52 for ; Fri, 20 Dec 2024 20:48:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0E6233858C52 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0E6233858C52 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::12d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734727691; cv=none; b=sPr8kA0w7NIZZdDWbeLK7VyyoP4mKCeGTlps+xLEPFUKLMqNTpkYNRULUAwr58rx1Apd+XG1eaPhG+CKyN2SC/LFmRXhLkblGay2GRBDT6shCVMUTvGgTcI8c1bTiFIQq/+js4DO7CIMQTMP8lJSI+k/H/h0+iQ9Q12UYLgfVqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734727691; c=relaxed/simple; bh=vQ7Tc8mAzJDA/j8vTgeANmB5dq50H1l33naOTdxWBnY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=IdPIYWlbRqjDwLrp/arlFvl8cT1N3uJHLlPmDWb1+2rYWQbLgJnsynVKeIELRAtfoCYjWJBcUCq/mcRKVdLmdpTWPmcZC0+J1C4JXTvNYTKi+Neh0bk7d3ydyiGVXO+E31KCjJs+SQnenwDibDvxPh5+bBBb+EtDgCoCrfNko0c= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0E6233858C52 Received: by mail-il1-x12d.google.com with SMTP id e9e14a558f8ab-3a7d690479eso16802355ab.0 for ; Fri, 20 Dec 2024 12:48:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1734727690; x=1735332490; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=KQMYH6JGQOotGa6QdNPXgNijG8Kil8/I1iKisA96UA0=; b=F7ihLE8SF6g3O2ZaN6sBx07iPeSB1pEL90nFi3iZFNyqIDtcny0Ov5jV+9ddohV4D8 RA76hr6gskvoWza8pfmXAV9xHLzovDOdhDlAOR8D1Ejq+AIZNh7W2teErNhZm6p0JwFt ywyUtueyD0uWwiXtvvWQAX7301R97/CN7Yki6JIuj9Z0ZXBAz6FDJ9k0SztpieEsEb23 lWmCmN6C9P4wJNZKGf+hgahNOGSv/HxtyWzbiwh8gSElF4+L4tshyaSz/yptxFNRNZB9 jqTKqndr5odDxtnAP7JpivL/2iBOwYh6lulEXJSJcJbllD6+zaih1rbksvtdQYObvc60 VrPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734727690; x=1735332490; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KQMYH6JGQOotGa6QdNPXgNijG8Kil8/I1iKisA96UA0=; b=oO2KxmsvjTyjKeRYgCYOc/E7xGPDiwwwoiZjoDvhrSJp/CmKY4l5BRFKnuB4s3Ecmc B+33wkk9j40j47xYvDp8eNjtHYxBrOoQ2QQqugDPGXuqlxbn3JygprJLidPpdLtQq5r4 sPRJoC8BlsHk9EmHtIyh6CktsdmzhVNS3yVs6pCDf+Pl+Ukkvintj3l52KCqDIzPiEaj mZ0tW4buVw0JeMFRHNOnGL9WzvxDUNl3IurDze3t6RO/29oJH74jVVHpV7xH5c8hu4vD OcudH3rYqxwyaNjVw6X8l/ZTMg68qonNl6TWptAzMSHZnnBGBDYmohsf/N0vWU/3M6r7 qENQ== X-Gm-Message-State: AOJu0YwcaMIYsy1Eu6kDVpk4Su6Z2/x0kokukf+JwUg2k2Xapvvus3zG nKVePed3NUQ2k40iNQ+RqvgBOCukSADXpywCmKeztMExIKtB9BB7v/VQLWa5Q+J6wVs5CsASdXg = X-Gm-Gg: ASbGncuOGfPs+O/evLQh3TlmsxXAH4DztVRnY8XoJhQyT5Y6eUK5u+WaMG/KkR/BXOL KN3BWgDi7sCTBrhVwoyo4QdTOfg3vo/bSWpKQCo9Ci+IfUQok2ikyPHjs3k5PLcXO/Aapkeg2IA H6hSjsJrY7VWfiprGBdySKrBHEyOWuhjHw/iSZS25bKLV+cC0zbTpYagpSiwZK94e4k0scZqPMy zdsSZslW4OKUVXBNkr3sKfnuD00AYhFTDkxyFGylcvsPv5QOc3htyahD7LHyeH/FJVKGZ33D8ir +H/cJrdiPptBr20KrACA57k= X-Google-Smtp-Source: AGHT+IEn6pHfc7kgWSsCM7XoECJasneZqWKpX+3KAA3XIb/aAKWKuI/XXUNKlIF0sPr6Sf0zJfxK+Q== X-Received: by 2002:a05:6e02:1d0e:b0:3a7:87f2:b013 with SMTP id e9e14a558f8ab-3c2d1e7df90mr39905765ab.4.1734727690274; Fri, 20 Dec 2024 12:48:10 -0800 (PST) Received: from localhost.localdomain (97-122-113-155.hlrn.qwest.net. [97.122.113.155]) by smtp.gmail.com with ESMTPSA id 8926c6da1cb9f-4e68c1df18bsm975702173.137.2024.12.20.12.48.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Dec 2024 12:48:09 -0800 (PST) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Simplify traits.h using C++17 Date: Fri, 20 Dec 2024 13:48:00 -0700 Message-ID: <20241220204800.3247089-1-tromey@adacore.com> X-Mailer: git-send-email 2.47.0 MIME-Version: 1.0 X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~patchwork=sourceware.org@sourceware.org This patch simplifies gdbsupport/traits.h by reusing some C++17 type traits. I kept the local names, since they are generally better. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31423 --- gdbsupport/traits.h | 55 ++++++++------------------------------------- 1 file changed, 9 insertions(+), 46 deletions(-) diff --git a/gdbsupport/traits.h b/gdbsupport/traits.h index 7350cc45d9c..62e6de7deaa 100644 --- a/gdbsupport/traits.h +++ b/gdbsupport/traits.h @@ -89,54 +89,17 @@ template class Op, typename... Args> using is_detected_convertible = std::is_convertible, To>; -/* A few trait helpers, mainly stolen from libstdc++. Uppercase - because "and/or", etc. are reserved keywords. */ +/* A few trait helpers -- standard traits but with slightly nicer + names. Uppercase because "and/or", etc. are reserved keywords. */ template -struct Not : public std::integral_constant -{}; - -template -struct Or; - -template<> -struct Or<> : public std::false_type -{}; - -template -struct Or : public B1 -{}; - -template -struct Or - : public std::conditional::type -{}; - -template -struct Or - : public std::conditional>::type -{}; - -template -struct And; - -template<> -struct And<> : public std::true_type -{}; - -template -struct And : public B1 -{}; - -template -struct And - : public std::conditional::type -{}; - -template -struct And - : public std::conditional, B1>::type -{}; +using Not = std::negation; + +template +using Or = std::disjunction; + +template +using And = std::conjunction; /* Concepts-light-like helper to make SFINAE logic easier to read. */ template