From patchwork Wed Mar 16 16:30:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Giuliano Procida X-Patchwork-Id: 52011 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 70E9C3888829 for ; Wed, 16 Mar 2022 16:31:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 70E9C3888829 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1647448291; bh=4L3iFLbdg4PxKVb3T4104U8MKDvT04USGvgKjAoy+Ew=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=vZFGHZ8Nqhi/JMgfECrnB9hrqpcOE/GKMcR7/+qO81w5Qaq50dUtmqcoMLQUIvopF XigMB5Yjsugjktt7Uy0MhhYsbDRQfQbXlFA/tHlNwy1JDQfE30rjr9B8u/Qc4Jg9DV 9/aLJyTgt9ZyzsOoxT1Zjl2XRVXIUfu3Pv/HIvrU= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from mail-ed1-x549.google.com (mail-ed1-x549.google.com [IPv6:2a00:1450:4864:20::549]) by sourceware.org (Postfix) with ESMTPS id ADB6F3881873 for ; Wed, 16 Mar 2022 16:31:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ADB6F3881873 Received: by mail-ed1-x549.google.com with SMTP id b24-20020a50e798000000b0041631767675so1604163edn.23 for ; Wed, 16 Mar 2022 09:31:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=4L3iFLbdg4PxKVb3T4104U8MKDvT04USGvgKjAoy+Ew=; b=x6PZGXytWeMd7BRlbBGPguzn9CA3gIY3CMD6c6hgc3w5kKpCP/LhoZySXWZDoRlt6z FVPNQFmY8UeNAQan08FIP0sYs6VqWhm/eAej2Yy+STviWeJT7evKJQC9E5q1+Jxlgoty +pkOgAZqACas6V+ZsW7i2PAkGaFjR1ZSXdH/Ooey2aY/DGDoc36hUNKtmZ65GuRe4ZZv Ff+7bh1Yupkpul8V7QmtsStQh8QBLSsbp36b+7LVZy01S4mAlrxyiqaXvduN/EjHqLc2 +PhNdCwSDb39FtmlMGmwKkNBh7jz6rQKS/B1CGBYDFTDhCbdp6EucS27BxXkJ7pPKjJY +FKw== X-Gm-Message-State: AOAM531SIvBrfK0/x8RZ9q6KRwKf9q5+agZRLvV7L4HNACWDHLqS0wda R1BlIiOsVQdzEjHJ9PHaNXBKQvEffXs+JmLwECnwd6heyiLYLjanO90V3OR5vux6gS82H16DUGS fkPczSMcpJgNBgpN6oNF1SArQJVqb0rPG+bLcmvvDuJuQ1h4MgAlGwimbTUGRjALU6OXqEHU= X-Google-Smtp-Source: ABdhPJyvbyqclHV4r2iIopV5loMQKljQAv3SG4jqmxdTyzoGkZONVGvjD4p0a7XlC2lgh/jqlvM9fQQQcNW41Q== X-Received: from tef.lon.corp.google.com ([2a00:79e0:d:210:5871:c940:7381:f8f4]) (user=gprocida job=sendgmr) by 2002:a17:907:a41f:b0:6d6:f925:1696 with SMTP id sg31-20020a170907a41f00b006d6f9251696mr726731ejc.62.1647448284207; Wed, 16 Mar 2022 09:31:24 -0700 (PDT) Date: Wed, 16 Mar 2022 16:30:52 +0000 In-Reply-To: <20220316163055.4127796-1-gprocida@google.com> Message-Id: <20220316163055.4127796-2-gprocida@google.com> Mime-Version: 1.0 References: <20220314181312.3436802-1-gprocida@google.com> <20220316163055.4127796-1-gprocida@google.com> X-Mailer: git-send-email 2.35.1.894.gb6a874cedc-goog Subject: [PATCH v2 1/4] optional: minor improvements To: libabigail@sourceware.org X-Spam-Status: No, score=-21.5 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: Giuliano Procida via Libabigail From: Giuliano Procida Reply-To: Giuliano Procida Cc: maennich@google.com, kernel-team@android.com Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libabigail" This change makes minor improvements to the optional class used with pre-C++17 compilers. - adds operator== and operator!= - adds various missing noexcept (but not constexpr) decorations - defines operator bool in terms of has_value Note that some constexpr decorations would require C++17 anyway. * include/abg-cxx-compat.h (optional): Add operator== and operator!=. Add noexcept decorations. Tweak operator bool. Signed-off-by: Giuliano Procida Reviewed-by: Matthias Maennich --- include/abg-cxx-compat.h | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/include/abg-cxx-compat.h b/include/abg-cxx-compat.h index 443905c7..5c5943d0 100644 --- a/include/abg-cxx-compat.h +++ b/include/abg-cxx-compat.h @@ -45,7 +45,7 @@ public: optional(const T& value) : has_value_(true), value_(value) {} bool - has_value() const + has_value() const noexcept { return has_value_; } @@ -67,19 +67,19 @@ public: } const T& - operator*() const + operator*() const& noexcept { return value_; } T& - operator*() + operator*() & noexcept { return value_; } const T* - operator->() const + operator->() const noexcept { return &value_; } T* - operator->() + operator->() noexcept { return &value_; } optional& @@ -90,9 +90,27 @@ public: return *this; } - explicit operator bool() const { return has_value_; } + explicit operator bool() const noexcept { return has_value(); } }; +template +bool +operator==(const optional& lhs, const optional& rhs) +{ + if (!lhs.has_value() && !rhs.has_value()) + return true; + if (!lhs.has_value() || !rhs.has_value()) + return false; + return lhs.value() == rhs.value(); +} + +template +bool +operator!=(const optional& lhs, const optional& rhs) +{ + return !(lhs == rhs); +} + #endif }