[PATCH] gdbsupport: mark array_view::slice with [[nodiscard]]
Simon Marchi
simon.marchi@polymtl.ca
Fri Nov 3 03:19:09 GMT 2023
From: Simon Marchi <simon.marchi@efficios.com>
I (almost) had a bug where I did:
buffer.slice (...)
but I meant:
buffer = buffer.slice (...)
The first one does nothing, it creates a new array_view but without
using it, it's useless. Mark the slice methods with [[nodiscard]]
(which is standard C++17) so that error would generate a warning.
I guess that many functions could be marked as nodiscard, essentially
function that is pure (doesn't have side-effects). But this one seems
particularly easy to mis-use.
Change-Id: Ib39a0a65a5728a3cfd68a02ae31635810baeaccb
---
gdbsupport/array-view.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gdbsupport/array-view.h b/gdbsupport/array-view.h
index ee3a3c58710c..4b519112e78f 100644
--- a/gdbsupport/array-view.h
+++ b/gdbsupport/array-view.h
@@ -185,6 +185,7 @@ class array_view
/* Slice an array view. */
/* Return a new array view over SIZE elements starting at START. */
+ [[nodiscard]]
constexpr array_view<T> slice (size_type start, size_type size) const noexcept
{
#if defined(_GLIBCXX_DEBUG) && __cplusplus >= 201402L
@@ -195,6 +196,7 @@ class array_view
/* Return a new array view over all the elements after START,
inclusive. */
+ [[nodiscard]]
constexpr array_view<T> slice (size_type start) const noexcept
{
#if defined(_GLIBCXX_DEBUG) && __cplusplus >= 201402L
base-commit: 268109cad16c692e24a583c21ef5a8ac58cc51fe
--
2.42.0
More information about the Gdb-patches
mailing list