gdbsupport: fix gdb::optional compilation with C++11 && _GLIBCXX_DEBUG
authorSimon Marchi <simon.marchi@polymtl.ca>
Fri, 26 Aug 2022 15:46:01 +0000 (11:46 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Fri, 26 Aug 2022 15:47:23 +0000 (11:47 -0400)
Similar to 911438f9f4 ("gdbsupport: fix array-view compilation with
c++11 && _GLIBCXX_DEBUG"), but for gdb::optional.

I get this error when building with Clang 14 and -std=c++11:

      CXX      agent.o
    In file included from /home/simark/src/binutils-gdb/gdbsupport/agent.cc:20:
    In file included from /home/simark/src/binutils-gdb/gdbsupport/common-defs.h:210:
    In file included from /home/simark/src/binutils-gdb/gdbsupport/common-debug.h:23:
    /home/simark/src/binutils-gdb/gdbsupport/../gdbsupport/gdb_optional.h:213:5: error: use of this statement in a constexpr function is a C++14 extension [-Werror,-Wc++14-extensions]
        gdb_assert (this->has_value ());
        ^
    /home/simark/src/binutils-gdb/gdbsupport/gdb_assert.h:35:3: note: expanded from macro 'gdb_assert'
      ((void) ((expr) ? 0 :                                                       \
      ^

Change-Id: If0cf55607fc9dbd1925ccb97cd9abbf8993ff264

gdbsupport/gdb_optional.h

index 70b15bd3bdc21d1063a8d3f02cb10bb0a244893b..1ea6164ec73104573f6dc0a6ef96c7956819caf4 100644 (file)
@@ -202,14 +202,14 @@ private:
   /* The get operations have m_instantiated as a precondition.  */
   T &get () noexcept
   {
-#if defined(_GLIBCXX_DEBUG)
+#if defined(_GLIBCXX_DEBUG) && __cplusplus >= 201402L
     gdb_assert (this->has_value ());
 #endif
     return m_item;
   }
   constexpr const T &get () const noexcept
   {
-#if defined(_GLIBCXX_DEBUG)
+#if defined(_GLIBCXX_DEBUG) && __cplusplus >= 201402L
     gdb_assert (this->has_value ());
 #endif
     return m_item;