vec.h: Fix GCC build with -std=gnu++20 [PR98059]
authorScott Snyder <sss@li-snyder.org>
Wed, 2 Dec 2020 14:42:56 +0000 (15:42 +0100)
committerJakub Jelinek <jakub@redhat.com>
Wed, 2 Dec 2020 14:42:56 +0000 (15:42 +0100)
Apparently vec.h doesn't build with -std=c++20/gnu++20, since the
DR2237 r11-532 change.
template <typename T>
class auto_delete_vec
{
private:
  auto_vec_delete<T> (const auto_delete_vec<T> &) = delete;
};
which vec.h uses is invalid C++20, one needs to use
  auto_vec_delete (const auto_delete_vec &) = delete;
instead which is valid all the way back to C++11 (and without = delete
to C++98).

2020-12-02  Scott Snyder  <sss@li-snyder.org>

PR plugins/98059
* vec.h (auto_delete_vec): Use
DISABLE_COPY_AND_ASSIGN(auto_delete_vec) instead of
DISABLE_COPY_AND_ASSIGN(auto_delete_vec<T>) to make it valid C++20
after DR2237.

gcc/vec.h

index 14d77e873427a06a55885bd98eae3529eb3796f9..90904515ea0017896cf3ed477d2c385a5d1f0c8d 100644 (file)
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -1602,7 +1602,7 @@ class auto_delete_vec : public auto_vec <T *>
   ~auto_delete_vec ();
 
 private:
-  DISABLE_COPY_AND_ASSIGN(auto_delete_vec<T>);
+  DISABLE_COPY_AND_ASSIGN(auto_delete_vec);
 };
 
 /* Conditionally allocate heap memory for VEC and its internal vector.  */