[PATCH] vec.h: Fix GCC build with -std=gnu++20 [PR98059]

Jakub Jelinek jakub@redhat.com
Wed Dec 2 14:05:44 GMT 2020


Hi!

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).

Tested on x86_64-linux, ok for trunk?

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.jj	2020-10-30 08:59:57.081496258 +0100
+++ gcc/vec.h	2020-12-02 14:56:01.098938644 +0100
@@ -1602,7 +1602,7 @@ class auto_delete_vec : public auto_vec
   ~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.  */

	Jakub



More information about the Gcc-patches mailing list