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 <s...@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