Hi, the following patch removes redundant semicolons after in-class member function definitions from libstdc++-v3 headers. These semicolons trigger warnings if you compile the respective headers with "-Wextra-semi -Wsystem-headers".
Bootstrapped and regtested on x86_64-pc-linux-gnu. OK for trunk? Regards, Volker 2017-07-19 Volker Reichelt <v.reich...@netcologne.de> * libsupc++/new (bad_array_new_length): Remove redundant semicolon after in-class member function definition. * include/bits/locale_facets.h (ctype_byname, num_put): Likewise. * include/bits/locale_facets_nonio.h (time_put_byname): Likewise. * include/bits/random.h (mersenne_twister_engine): Likewise. * include/tr1/random.h (mersenne_twister): Likewise * include/ext/random (simd_fast_mersenne_twister_engine): Likewise. * include/ext/rope (char_producer, _Rope_char_consumer, _Rope_self_destruct_ptr, _Rope_const_iterator, _Rope_iterator): Likewise. * include/ext/ropeimpl.h (_Rope_flatten_char_consumer, _Rope_insert_char_consumer): Likewise. Index: libstdc++-v3/libsupc++/new =================================================================== --- libstdc++-v3/libsupc++/new (revision 250281) +++ libstdc++-v3/libsupc++/new (working copy) @@ -68,7 +68,7 @@ class bad_array_new_length : public bad_alloc { public: - bad_array_new_length() throw() { }; + bad_array_new_length() throw() { } // This declaration is not useless: // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 Index: libstdc++-v3/include/bits/locale_facets.h =================================================================== --- libstdc++-v3/include/bits/locale_facets.h (revision 250281) +++ libstdc++-v3/include/bits/locale_facets.h (working copy) @@ -1487,7 +1487,7 @@ protected: virtual - ~ctype_byname() { }; + ~ctype_byname() { } }; /// 22.2.1.4 Class ctype_byname specializations. @@ -2486,7 +2486,7 @@ /// Destructor. virtual - ~num_put() { }; + ~num_put() { } //@{ /** Index: libstdc++-v3/include/bits/locale_facets_nonio.h =================================================================== --- libstdc++-v3/include/bits/locale_facets_nonio.h (revision 250281) +++ libstdc++-v3/include/bits/locale_facets_nonio.h (working copy) @@ -898,7 +898,7 @@ explicit time_put_byname(const char*, size_t __refs = 0) : time_put<_CharT, _OutIter>(__refs) - { }; + { } #if __cplusplus >= 201103L explicit Index: libstdc++-v3/include/bits/random.h =================================================================== --- libstdc++-v3/include/bits/random.h (revision 250281) +++ libstdc++-v3/include/bits/random.h (working copy) @@ -520,7 +520,7 @@ */ static constexpr result_type min() - { return 0; }; + { return 0; } /** * @brief Gets the largest possible value in the output range. Index: libstdc++-v3/include/tr1/random.h =================================================================== --- libstdc++-v3/include/tr1/random.h (revision 250281) +++ libstdc++-v3/include/tr1/random.h (working copy) @@ -594,7 +594,7 @@ result_type min() const - { return 0; }; + { return 0; } result_type max() const Index: libstdc++-v3/include/ext/random =================================================================== --- libstdc++-v3/include/ext/random (revision 250281) +++ libstdc++-v3/include/ext/random (working copy) @@ -112,7 +112,7 @@ static constexpr result_type min() - { return 0; }; + { return 0; } static constexpr result_type max() Index: libstdc++-v3/include/ext/rope =================================================================== --- libstdc++-v3/include/ext/rope (revision 250281) +++ libstdc++-v3/include/ext/rope (working copy) @@ -150,7 +150,7 @@ class char_producer { public: - virtual ~char_producer() { }; + virtual ~char_producer() { } virtual void operator()(size_t __start_pos, size_t __len, @@ -314,7 +314,7 @@ // compile-time would do. Hence this should all be private // for now. // The symmetry with char_producer is accidental and temporary. - virtual ~_Rope_char_consumer() { }; + virtual ~_Rope_char_consumer() { } virtual bool operator()(const _CharT* __buffer, size_t __len) = 0; @@ -924,9 +924,9 @@ ~_Rope_self_destruct_ptr() { _Rope_RopeRep<_CharT, _Alloc>::_S_unref(_M_ptr); } #if __cpp_exceptions - _Rope_self_destruct_ptr() : _M_ptr(0) { }; + _Rope_self_destruct_ptr() : _M_ptr(0) { } #else - _Rope_self_destruct_ptr() { }; + _Rope_self_destruct_ptr() { } #endif _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT, _Alloc>* __p) : _M_ptr(__p) { } @@ -1153,7 +1153,7 @@ typedef const _CharT* pointer; public: - _Rope_const_iterator() { }; + _Rope_const_iterator() { } _Rope_const_iterator(const _Rope_const_iterator& __x) : _Rope_iterator_base<_CharT,_Alloc>(__x) { } @@ -1325,7 +1325,7 @@ _Rope_iterator() { this->_M_root = 0; // Needed for reference counting. - }; + } _Rope_iterator(const _Rope_iterator& __x) : _Rope_iterator_base<_CharT, _Alloc>(__x) Index: libstdc++-v3/include/ext/ropeimpl.h =================================================================== --- libstdc++-v3/include/ext/ropeimpl.h (revision 250281) +++ libstdc++-v3/include/ext/ropeimpl.h (working copy) @@ -844,7 +844,7 @@ public: _Rope_flatten_char_consumer(_CharT* __buffer) - { _M_buf_ptr = __buffer; }; + { _M_buf_ptr = __buffer; } ~_Rope_flatten_char_consumer() {} @@ -897,8 +897,8 @@ _Insert_ostream& _M_o; public: _Rope_insert_char_consumer(_Insert_ostream& __writer) - : _M_o(__writer) {}; - ~_Rope_insert_char_consumer() { }; + : _M_o(__writer) {} + ~_Rope_insert_char_consumer() { } // Caller is presumed to own the ostream bool operator() (const _CharT* __leaf, size_t __n); // Returns true to continue traversal.