From 80ebbb17a129213118862f03372bd912b95276d8 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Thu, 16 Nov 2017 04:48:34 +0000 Subject: [PATCH] More of P0600 - '[[nodiscard]] in the Library' mark empty() as nodiscard in match_results. llvm-svn: 318375 --- libcxx/include/regex | 8 +++---- .../re/re.results/re.results.size/empty.fail.cpp | 27 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 libcxx/test/std/re/re.results/re.results.size/empty.fail.cpp diff --git a/libcxx/include/regex b/libcxx/include/regex index 553d08d..ff84b27 100644 --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -5240,11 +5240,11 @@ public: // size: _LIBCPP_INLINE_VISIBILITY - size_type size() const {return __matches_.size();} + size_type size() const _NOEXCEPT {return __matches_.size();} _LIBCPP_INLINE_VISIBILITY - size_type max_size() const {return __matches_.max_size();} - _LIBCPP_INLINE_VISIBILITY - bool empty() const {return size() == 0;} + size_type max_size() const _NOEXCEPT {return __matches_.max_size();} + _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY + bool empty() const _NOEXCEPT {return size() == 0;} // element access: _LIBCPP_INLINE_VISIBILITY diff --git a/libcxx/test/std/re/re.results/re.results.size/empty.fail.cpp b/libcxx/test/std/re/re.results/re.results.size/empty.fail.cpp new file mode 100644 index 0000000..6f677f3 --- /dev/null +++ b/libcxx/test/std/re/re.results/re.results.size/empty.fail.cpp @@ -0,0 +1,27 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// class match_results +// bool empty() const; + +// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 +// UNSUPPORTED: clang-3.3, clang-3.4, clang-3.5, clang-3.6, clang-3.7, clang-3.8 + +#include + +#include "test_macros.h" + +int main () +{ + std::match_results c; + c.empty(); // expected-error {{ignoring return value of function declared with 'nodiscard' attribute}} +} -- 2.7.4