diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-27 17:08:06 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-27 17:08:06 +0000 |
commit | 4dbba0a5df21e9d70b8c060a71944b5c613322c3 (patch) | |
tree | b3fd447150589eab89171921e2888e15f2d34a79 /libstdc++-v3 | |
parent | 75f984b649b5343a1cd0b4b767ef342b88f5623a (diff) | |
download | gcc-4dbba0a5df21e9d70b8c060a71944b5c613322c3.tar.gz |
2013-06-27 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 200479 using svnmerge.py
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@200483 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
78 files changed, 648 insertions, 171 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 640f00a0be2..347cf3cee8f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,106 @@ +2013-06-27 Paolo Carlini <paolo.carlini@oracle.com> + + * testsuite/21_strings/basic_string/append/*: Move inside + testsuite/21_strings/basic_string/modifiers/. + * testsuite/21_strings/basic_string/assign/*: Likewise. + * testsuite/21_strings/basic_string/insert/*: Likewise. + * testsuite/21_strings/basic_string/replace/*: Likewise. + * testsuite/21_strings/basic_string/modifiers/pop_back/char/ + pop_back.cc: Rename to 1.cc. + * testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/ + pop_back.cc: Likewise. + * testsuite/ext/vstring/assign/*: Move inside + testsuite/ext/vstring/modifiers/. + +2013-06-27 Paolo Carlini <paolo.carlini@oracle.com> + + * include/bits/stl_deque.h (deque<>::insert(iterator, + const value_type&), deque<>::insert(iterator, value_type&&), + deque<>::emplace(iterator, _Args&&...)): Adjust C++11 signatures to + take a const_iterator. + (deque<>::erase): Simplify. + * include/bits/stl_list.h: Likewise. + (_List_iterator<>::_M_const_cast): Add. + * include/bits/stl_vector.h: Likewise. + * include/bits/stl_bvector.h: Likewise. + (_Bit_iterator::_M_const_cast): Add. + * include/bits/deque.tcc: Adjust definitions. + * include/bits/list.tcc: Likewise. + * include/bits/vector.tcc: Likewise. + * include/bits/stl_iterator.h (__normal_iterator<>::_M_const_cast): + Define trivial version in C++98 mode. + * include/ext/vstring.h (__versa_string<>::insert(iterator, _CharT), + __versa_string<>::replace(iterator, iterator, const __versa_string&), + __versa_string<>::replace(iterator, iterator, const _CharT*, + size_type), __versa_string<>::replace(iterator, iterator, + const _CharT*), __versa_string<>::replace(iterator, iterator, + size_type, _CharT)): Adjust C++11 signatures to take a pair of + const_iterators. + * include/debug/deque: Adjust. + * include/debug/list: Likewise. + * include/debug/vector: Likewise. + * include/profile/deque: Likewise. + * include/profile/list: Likewise. + * include/profile/vector: Likewise. + (vector<>::emplace): Add. + * testsuite/util/exception/safety.h: Update. + * testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc: + New. + * testsuite/23_containers/deque/modifiers/insert/const_iterator.cc: + Likewise. + * testsuite/23_containers/list/modifiers/emplace/const_iterator.cc: + Likewise. + * testsuite/23_containers/list/modifiers/insert/const_iterator.cc: + Likewise. + * testsuite/23_containers/vector/bool/modifiers/insert/ + const_iterator.cc: Likewise. + * testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc: + Likewise. + * testsuite/23_containers/vector/modifiers/insert/const_iterator.cc: + Likewise. + * testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc: + Likewise. + * testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc: + Likewise. + * testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc: + Likewise. + * testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc: + Likewise. + + * testsuite/ext/vstring/modifiers/char/54577.cc: Move to testsuite/ + ext/vstring/modifiers/erase/char/. + * testsuite/ext/vstring/modifiers/wchar_t/54577.cc: Move to testsuite/ + ext/vstring/modifiers/wchar_t/. + * testsuite/ext/vstring/modifiers/char/pop_back.cc: Move to testsuite/ + ext/vstring/modifiers/pop_back/char/. + * testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc: Move to + testsuite/ext/vstring/modifiers/pop_back/wchar_t/. + + * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: + Adjust dg-error line number. + * testsuite/23_containers/deque/requirements/dr438/ + constructor_1_neg.cc: Likewise. + * testsuite/23_containers/deque/requirements/dr438/ + constructor_2_neg.cc: Likewise. + * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: + Likewise. + * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: + Likewise. + * testsuite/23_containers/list/requirements/dr438/ + constructor_1_neg.cc: Likewise. + * testsuite/23_containers/list/requirements/dr438/ + constructor_2_neg.cc: Likewise. + * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: + Likewise. + * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: + Likewise. + * testsuite/23_containers/vector/requirements/dr438/ + constructor_1_neg.cc: Likewise. + * testsuite/23_containers/vector/requirements/dr438/ + constructor_2_neg.cc: Likewise. + * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: + Likewise. + 2013-06-25 Ed Smith-Rowland <3dw4rd@verizon.net> Status page for C++2014 library features @@ -7,6 +110,16 @@ 2013-06-25 Paolo Carlini <paolo.carlini@oracle.com> + * testsuite/23_containers/map/modifiers/erase/abi_tag.cc: Avoid + spurious fails with check-debug. + * testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc: + Likewise. + * testsuite/23_containers/set/modifiers/erase/abi_tag.cc: Likewise. + * testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc: + Likewise. + +2013-06-25 Paolo Carlini <paolo.carlini@oracle.com> + PR libstdc++/57704 * include/bits/char_traits.h (char_traits<char>::lt): Implement LWG 467. diff --git a/libstdc++-v3/include/bits/deque.tcc b/libstdc++-v3/include/bits/deque.tcc index 8da73589869..9c33ad9b0dd 100644 --- a/libstdc++-v3/include/bits/deque.tcc +++ b/libstdc++-v3/include/bits/deque.tcc @@ -143,33 +143,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER } #endif - template <typename _Tp, typename _Alloc> - typename deque<_Tp, _Alloc>::iterator - deque<_Tp, _Alloc>:: - insert(iterator __position, const value_type& __x) - { - if (__position._M_cur == this->_M_impl._M_start._M_cur) - { - push_front(__x); - return this->_M_impl._M_start; - } - else if (__position._M_cur == this->_M_impl._M_finish._M_cur) - { - push_back(__x); - iterator __tmp = this->_M_impl._M_finish; - --__tmp; - return __tmp; - } - else - return _M_insert_aux(__position, __x); - } - #if __cplusplus >= 201103L template<typename _Tp, typename _Alloc> template<typename... _Args> typename deque<_Tp, _Alloc>::iterator deque<_Tp, _Alloc>:: - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { if (__position._M_cur == this->_M_impl._M_start._M_cur) { @@ -184,13 +163,39 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER return __tmp; } else - return _M_insert_aux(__position, std::forward<_Args>(__args)...); + return _M_insert_aux(__position._M_const_cast(), + std::forward<_Args>(__args)...); } #endif template <typename _Tp, typename _Alloc> typename deque<_Tp, _Alloc>::iterator deque<_Tp, _Alloc>:: +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else + insert(iterator __position, const value_type& __x) +#endif + { + if (__position._M_cur == this->_M_impl._M_start._M_cur) + { + push_front(__x); + return this->_M_impl._M_start; + } + else if (__position._M_cur == this->_M_impl._M_finish._M_cur) + { + push_back(__x); + iterator __tmp = this->_M_impl._M_finish; + --__tmp; + return __tmp; + } + else + return _M_insert_aux(__position._M_const_cast(), __x); + } + + template <typename _Tp, typename _Alloc> + typename deque<_Tp, _Alloc>::iterator + deque<_Tp, _Alloc>:: _M_erase(iterator __position) { iterator __next = __position; diff --git a/libstdc++-v3/include/bits/list.tcc b/libstdc++-v3/include/bits/list.tcc index 9fc43cfe68a..4f82e35c921 100644 --- a/libstdc++-v3/include/bits/list.tcc +++ b/libstdc++-v3/include/bits/list.tcc @@ -85,10 +85,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template<typename... _Args> typename list<_Tp, _Alloc>::iterator list<_Tp, _Alloc>:: - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); - __tmp->_M_hook(__position._M_node); + __tmp->_M_hook(__position._M_const_cast()._M_node); return iterator(__tmp); } #endif @@ -96,10 +96,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template<typename _Tp, typename _Alloc> typename list<_Tp, _Alloc>::iterator list<_Tp, _Alloc>:: +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else insert(iterator __position, const value_type& __x) +#endif { _Node* __tmp = _M_create_node(__x); - __tmp->_M_hook(__position._M_node); + __tmp->_M_hook(__position._M_const_cast()._M_node); return iterator(__tmp); } @@ -113,11 +117,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #endif { iterator __ret = iterator(__position._M_node->_M_next); -#if __cplusplus >= 201103L _M_erase(__position._M_const_cast()); -#else - _M_erase(__position); -#endif return __ret; } diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h index 97424fa7a7d..489d819f06f 100644 --- a/libstdc++-v3/include/bits/stl_bvector.h +++ b/libstdc++-v3/include/bits/stl_bvector.h @@ -222,6 +222,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _Bit_iterator(_Bit_type * __x, unsigned int __y) : _Bit_iterator_base(__x, __y) { } + iterator + _M_const_cast() const + { return *this; } + reference operator*() const { return reference(_M_p, 1UL << _M_offset); } @@ -859,14 +863,18 @@ template<typename _Alloc> } iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const bool& __x = bool()) +#else insert(iterator __position, const bool& __x = bool()) +#endif { const difference_type __n = __position - begin(); if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage && __position == end()) *this->_M_impl._M_finish++ = __x; else - _M_insert_aux(__position, __x); + _M_insert_aux(__position._M_const_cast(), __x); return begin() + __n; } @@ -904,20 +912,18 @@ template<typename _Alloc> iterator #if __cplusplus >= 201103L erase(const_iterator __position) - { return _M_erase(__position._M_const_cast()); } #else erase(iterator __position) - { return _M_erase(__position); } #endif + { return _M_erase(__position._M_const_cast()); } iterator #if __cplusplus >= 201103L erase(const_iterator __first, const_iterator __last) - { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } #else erase(iterator __first, iterator __last) - { return _M_erase(__first, __last); } #endif + { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } void resize(size_type __new_size, bool __x = bool()) diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h index 4bea82b1807..a03ba256b53 100644 --- a/libstdc++-v3/include/bits/stl_deque.h +++ b/libstdc++-v3/include/bits/stl_deque.h @@ -1458,7 +1458,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #if __cplusplus >= 201103L /** * @brief Inserts an object in %deque before specified iterator. - * @param __position An iterator into the %deque. + * @param __position A const_iterator into the %deque. * @param __args Arguments. * @return An iterator that points to the inserted data. * @@ -1467,11 +1467,22 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args); -#endif + emplace(const_iterator __position, _Args&&... __args); /** * @brief Inserts given value into %deque before specified iterator. + * @param __position A const_iterator into the %deque. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given value before the + * specified location. + */ + iterator + insert(const_iterator __position, const value_type& __x); +#else + /** + * @brief Inserts given value into %deque before specified iterator. * @param __position An iterator into the %deque. * @param __x Data to be inserted. * @return An iterator that points to the inserted data. @@ -1481,11 +1492,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ iterator insert(iterator __position, const value_type& __x); +#endif #if __cplusplus >= 201103L /** * @brief Inserts given rvalue into %deque before specified iterator. - * @param __position An iterator into the %deque. + * @param __position A const_iterator into the %deque. * @param __x Data to be inserted. * @return An iterator that points to the inserted data. * @@ -1493,7 +1505,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * specified location. */ iterator - insert(iterator __position, value_type&& __x) + insert(const_iterator __position, value_type&& __x) { return emplace(__position, std::move(__x)); } /** @@ -1568,11 +1580,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER iterator #if __cplusplus >= 201103L erase(const_iterator __position) - { return _M_erase(__position._M_const_cast()); } #else erase(iterator __position) - { return _M_erase(__position); } #endif + { return _M_erase(__position._M_const_cast()); } /** * @brief Remove a range of elements. @@ -1593,11 +1604,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER iterator #if __cplusplus >= 201103L erase(const_iterator __first, const_iterator __last) - { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } #else erase(iterator __first, iterator __last) - { return _M_erase(__first, __last); } #endif + { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } /** * @brief Swaps data with another %deque. diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h index 50b55eb57b4..9952c2c92d6 100644 --- a/libstdc++-v3/include/bits/stl_iterator.h +++ b/libstdc++-v3/include/bits/stl_iterator.h @@ -734,19 +734,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Container>::__type>& __i) : _M_current(__i.base()) { } +#if __cplusplus >= 201103L __normal_iterator<typename _Container::pointer, _Container> _M_const_cast() const { -#if __cplusplus >= 201103L using _PTraits = std::pointer_traits<typename _Container::pointer>; return __normal_iterator<typename _Container::pointer, _Container> (_PTraits::pointer_to(const_cast<typename _PTraits::element_type&> (*_M_current))); + } #else - return __normal_iterator<typename _Container::pointer, _Container> - (const_cast<typename _Container::pointer>(_M_current)); + __normal_iterator + _M_const_cast() const + { return *this; } #endif - } // Forward iterator requirements reference diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h index 678947107f3..7c3eb159aba 100644 --- a/libstdc++-v3/include/bits/stl_list.h +++ b/libstdc++-v3/include/bits/stl_list.h @@ -140,6 +140,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _List_iterator(__detail::_List_node_base* __x) : _M_node(__x) { } + _Self + _M_const_cast() const + { return *this; } + // Must downcast from _List_node_base to _List_node to get to _M_data. reference operator*() const @@ -1060,11 +1064,24 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args); -#endif + emplace(const_iterator __position, _Args&&... __args); /** * @brief Inserts given value into %list before specified iterator. + * @param __position A const_iterator into the %list. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given value before + * the specified location. Due to the nature of a %list this + * operation can be done in constant time, and does not + * invalidate iterators and references. + */ + iterator + insert(const_iterator __position, const value_type& __x); +#else + /** + * @brief Inserts given value into %list before specified iterator. * @param __position An iterator into the %list. * @param __x Data to be inserted. * @return An iterator that points to the inserted data. @@ -1076,11 +1093,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ iterator insert(iterator __position, const value_type& __x); +#endif #if __cplusplus >= 201103L /** * @brief Inserts given rvalue into %list before specified iterator. - * @param __position An iterator into the %list. + * @param __position A const_iterator into the %list. * @param __x Data to be inserted. * @return An iterator that points to the inserted data. * @@ -1090,7 +1108,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * invalidate iterators and references. */ iterator - insert(iterator __position, value_type&& __x) + insert(const_iterator __position, value_type&& __x) { return emplace(__position, std::move(__x)); } /** @@ -1206,11 +1224,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { while (__first != __last) __first = erase(__first); -#if __cplusplus >= 201103L return __last._M_const_cast(); -#else - return __last; -#endif } /** diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h index 5ac575460a0..a403b4f83bb 100644 --- a/libstdc++-v3/include/bits/stl_vector.h +++ b/libstdc++-v3/include/bits/stl_vector.h @@ -943,7 +943,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #if __cplusplus >= 201103L /** * @brief Inserts an object in %vector before specified iterator. - * @param __position An iterator into the %vector. + * @param __position A const_iterator into the %vector. * @param __args Arguments. * @return An iterator that points to the inserted data. * @@ -955,11 +955,24 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args); -#endif + emplace(const_iterator __position, _Args&&... __args); /** * @brief Inserts given value into %vector before specified iterator. + * @param __position A const_iterator into the %vector. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given value before + * the specified location. Note that this kind of operation + * could be expensive for a %vector and if it is frequently + * used the user should consider using std::list. + */ + iterator + insert(const_iterator __position, const value_type& __x); +#else + /** + * @brief Inserts given value into %vector before specified iterator. * @param __position An iterator into the %vector. * @param __x Data to be inserted. * @return An iterator that points to the inserted data. @@ -971,11 +984,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ iterator insert(iterator __position, const value_type& __x); +#endif #if __cplusplus >= 201103L /** * @brief Inserts given rvalue into %vector before specified iterator. - * @param __position An iterator into the %vector. + * @param __position A const_iterator into the %vector. * @param __x Data to be inserted. * @return An iterator that points to the inserted data. * @@ -985,7 +999,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * used the user should consider using std::list. */ iterator - insert(iterator __position, value_type&& __x) + insert(const_iterator __position, value_type&& __x) { return emplace(__position, std::move(__x)); } /** @@ -1074,11 +1088,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER iterator #if __cplusplus >= 201103L erase(const_iterator __position) - { return _M_erase(__position._M_const_cast()); } #else erase(iterator __position) - { return _M_erase(__position); } #endif + { return _M_erase(__position._M_const_cast()); } /** * @brief Remove a range of elements. @@ -1101,11 +1114,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER iterator #if __cplusplus >= 201103L erase(const_iterator __first, const_iterator __last) - { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } #else erase(iterator __first, iterator __last) - { return _M_erase(__first, __last); } #endif + { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } /** * @brief Swaps data with another %vector. @@ -1119,7 +1131,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER void swap(vector& __x) #if __cplusplus >= 201103L - noexcept(_Alloc_traits::_S_nothrow_swap()) + noexcept(_Alloc_traits::_S_nothrow_swap()) #endif { this->_M_impl._M_swap_data(__x._M_impl); diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc index d26cfafd1fa..8e22d10a26e 100644 --- a/libstdc++-v3/include/bits/vector.tcc +++ b/libstdc++-v3/include/bits/vector.tcc @@ -105,7 +105,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template<typename _Tp, typename _Alloc> typename vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else insert(iterator __position, const value_type& __x) +#endif { const size_type __n = __position - begin(); if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage @@ -120,11 +124,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) { _Tp __x_copy = __x; - _M_insert_aux(__position, std::move(__x_copy)); + _M_insert_aux(__position._M_const_cast(), std::move(__x_copy)); } else #endif - _M_insert_aux(__position, __x); + _M_insert_aux(__position._M_const_cast(), __x); } return iterator(this->_M_impl._M_start + __n); } @@ -292,7 +296,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template<typename... _Args> typename vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { const size_type __n = __position - begin(); if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage @@ -303,7 +307,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ++this->_M_impl._M_finish; } else - _M_insert_aux(__position, std::forward<_Args>(__args)...); + _M_insert_aux(__position._M_const_cast(), + std::forward<_Args>(__args)...); return iterator(this->_M_impl._M_start + __n); } diff --git a/libstdc++-v3/include/debug/deque b/libstdc++-v3/include/debug/deque index 2ac6d252e1d..638bf1cd3ca 100644 --- a/libstdc++-v3/include/debug/deque +++ b/libstdc++-v3/include/debug/deque @@ -383,7 +383,7 @@ namespace __debug template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { __glibcxx_check_insert(__position); _Base_iterator __res = _Base::emplace(__position.base(), @@ -394,7 +394,11 @@ namespace __debug #endif iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else insert(iterator __position, const _Tp& __x) +#endif { __glibcxx_check_insert(__position); _Base_iterator __res = _Base::insert(__position.base(), __x); @@ -404,7 +408,7 @@ namespace __debug #if __cplusplus >= 201103L iterator - insert(iterator __position, _Tp&& __x) + insert(const_iterator __position, _Tp&& __x) { return emplace(__position, std::move(__x)); } void diff --git a/libstdc++-v3/include/debug/list b/libstdc++-v3/include/debug/list index 9bc47124f39..c175de01f23 100644 --- a/libstdc++-v3/include/debug/list +++ b/libstdc++-v3/include/debug/list @@ -379,7 +379,7 @@ namespace __debug #if __cplusplus >= 201103L template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { __glibcxx_check_insert(__position); return iterator(_Base::emplace(__position.base(), @@ -387,16 +387,20 @@ namespace __debug } #endif - iterator - insert(iterator __position, const _Tp& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else + insert(iterator __position, const _Tp& __x) +#endif + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } #if __cplusplus >= 201103L iterator - insert(iterator __position, _Tp&& __x) + insert(const_iterator __position, _Tp&& __x) { return emplace(__position, std::move(__x)); } void diff --git a/libstdc++-v3/include/debug/vector b/libstdc++-v3/include/debug/vector index 4a65518bc82..f55dc67ede0 100644 --- a/libstdc++-v3/include/debug/vector +++ b/libstdc++-v3/include/debug/vector @@ -429,7 +429,7 @@ namespace __debug #if __cplusplus >= 201103L template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { __glibcxx_check_insert(__position); bool __realloc = _M_requires_reallocation(this->size() + 1); @@ -446,7 +446,11 @@ namespace __debug #endif iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else insert(iterator __position, const _Tp& __x) +#endif { __glibcxx_check_insert(__position); bool __realloc = _M_requires_reallocation(this->size() + 1); @@ -464,7 +468,7 @@ namespace __debug template<typename _Up = _Tp> typename __gnu_cxx::__enable_if<!std::__are_same<_Up, bool>::__value, iterator>::__type - insert(iterator __position, _Tp&& __x) + insert(const_iterator __position, _Tp&& __x) { return emplace(__position, std::move(__x)); } void diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h index 716d145f184..c78f2146a13 100644 --- a/libstdc++-v3/include/ext/vstring.h +++ b/libstdc++-v3/include/ext/vstring.h @@ -1087,7 +1087,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * change if an error is thrown. */ iterator - insert(iterator __p, _CharT __c) +#if __cplusplus >= 201103L + insert(const_iterator __p, _CharT __c) +#else + insert(iterator __p, _CharT __c) +#endif { _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend()); const size_type __pos = __p - _M_ibegin(); @@ -1313,7 +1317,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * the string doesn't change if an error is thrown. */ __versa_string& +#if __cplusplus >= 201103L + replace(const_iterator __i1, const_iterator __i2, + const __versa_string& __str) +#else replace(iterator __i1, iterator __i2, const __versa_string& __str) +#endif { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } /** @@ -1331,7 +1340,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * value of the string doesn't change if an error is thrown. */ __versa_string& +#if __cplusplus >= 201103L + replace(const_iterator __i1, const_iterator __i2, + const _CharT* __s, size_type __n) +#else replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) +#endif { _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 && __i2 <= _M_iend()); @@ -1352,7 +1366,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * the string doesn't change if an error is thrown. */ __versa_string& - replace(iterator __i1, iterator __i2, const _CharT* __s) +#if __cplusplus >= 201103L + replace(const_iterator __i1, const_iterator __i2, const _CharT* __s) +#else + replace(iterator __i1, iterator __i2, const _CharT* __s) +#endif { __glibcxx_requires_string(__s); return this->replace(__i1, __i2, __s, traits_type::length(__s)); @@ -1373,7 +1391,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * the string doesn't change if an error is thrown. */ __versa_string& +#if __cplusplus >= 201103L + replace(const_iterator __i1, const_iterator __i2, size_type __n, + _CharT __c) +#else replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) +#endif { _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 && __i2 <= _M_iend()); diff --git a/libstdc++-v3/include/profile/deque b/libstdc++-v3/include/profile/deque index 9943e1e9f02..0ec98386bae 100644 --- a/libstdc++-v3/include/profile/deque +++ b/libstdc++-v3/include/profile/deque @@ -320,7 +320,7 @@ namespace __profile template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { typename _Base::iterator __res = _Base::emplace(__position, std::forward<_Args>(__args)...); @@ -329,7 +329,11 @@ namespace __profile #endif iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else insert(iterator __position, const _Tp& __x) +#endif { typename _Base::iterator __res = _Base::insert(__position, __x); return iterator(__res); @@ -337,7 +341,7 @@ namespace __profile #if __cplusplus >= 201103L iterator - insert(iterator __position, _Tp&& __x) + insert(const_iterator __position, _Tp&& __x) { return emplace(__position, std::move(__x)); } void diff --git a/libstdc++-v3/include/profile/list b/libstdc++-v3/include/profile/list index 25ad11248b1..3a68bf7493a 100644 --- a/libstdc++-v3/include/profile/list +++ b/libstdc++-v3/include/profile/list @@ -335,7 +335,7 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> > #if __cplusplus >= 201103L template<typename... _Args> iterator - emplace(iterator __position, _Args&&... __args) + emplace(const_iterator __position, _Args&&... __args) { return iterator(_Base::emplace(__position.base(), std::forward<_Args>(__args)...), @@ -344,7 +344,11 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> > #endif iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else insert(iterator __position, const _Tp& __x) +#endif { _M_profile_insert(this, __position, size()); return iterator(_Base::insert(__position.base(), __x), this); @@ -352,8 +356,8 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> > #if __cplusplus >= 201103L iterator - insert(iterator __position, _Tp&& __x) - { + insert(const_iterator __position, _Tp&& __x) + { _M_profile_insert(this, __position, size()); return iterator(_Base::emplace(__position.base(), std::move(__x)), this); @@ -606,11 +610,12 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> > } private: - size_type _M_profile_insert(void* obj, iterator __pos, size_type __size) + size_type + _M_profile_insert(void* obj, const_iterator __pos, size_type __size) { size_type __shift = 0; - typename _Base::iterator __it = __pos.base(); - for ( ; __it!=_Base::end(); __it++) + typename _Base::const_iterator __it = __pos.base(); + for (; __it != _Base::end(); ++__it) __shift++; __profcxx_list_rewind(this); __profcxx_list_operation(this); diff --git a/libstdc++-v3/include/profile/vector b/libstdc++-v3/include/profile/vector index d9eb15740c6..de058d0d814 100644 --- a/libstdc++-v3/include/profile/vector +++ b/libstdc++-v3/include/profile/vector @@ -352,7 +352,11 @@ namespace __profile #endif iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else insert(iterator __position, const _Tp& __x) +#endif { __profcxx_vector_insert(this, __position.base() - _Base::begin(), this->size()); @@ -364,7 +368,7 @@ namespace __profile #if __cplusplus >= 201103L iterator - insert(iterator __position, _Tp&& __x) + insert(const_iterator __position, _Tp&& __x) { __profcxx_vector_insert(this, __position.base() - _Base::begin(), this->size()); @@ -374,6 +378,16 @@ namespace __profile return iterator(__res, this); } + template<typename... _Args> + iterator + emplace(const_iterator __position, _Args&&... __args) + { + typename _Base::iterator __res + = _Base::emplace(__position.base(), + std::forward<_Args>(__args)...); + return iterator(__res, this); + } + void insert(iterator __position, initializer_list<value_type> __l) { this->insert(__position, __l.begin(), __l.end()); } @@ -423,7 +437,6 @@ namespace __profile _M_profile_resize(this, __old_size, this->capacity()); } - iterator #if __cplusplus >= 201103L erase(const_iterator __position) diff --git a/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc b/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc index f0dcdec080d..f2f2330cea4 100644 --- a/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc +++ b/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc @@ -46,5 +46,6 @@ test02() // { dg-error "overflow in multiplication" "" { target *-*-* } 97 } // { dg-error "overflow in multiplication" "" { target *-*-* } 99 } // { dg-error "overflow in multiplication" "" { target *-*-* } 101 } +// { dg-error "overflow in constant expression" "" { target *-*-* } 108 } // { dg-prune-output "out of range" } // { dg-prune-output "not usable in a constant expression" } diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/append/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc index 2e9a3cf85f6..2e9a3cf85f6 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/append/char/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/append/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc index 8d12169e389..8d12169e389 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/append/char/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/append/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc index 47699d2396c..47699d2396c 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/append/char/3.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/append/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc index c2e435fb9d9..c2e435fb9d9 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/append/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/append/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc index 6f1875b622d..6f1875b622d 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/append/wchar_t/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/append/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc index 0867fa47f6b..0867fa47f6b 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/append/wchar_t/3.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc index d7cf0aa0dac..d7cf0aa0dac 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc index be14bb64c88..be14bb64c88 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc index b4ab4ace1fd..b4ab4ace1fd 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/3.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/move_assign.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc index ceb853612c5..ceb853612c5 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/char/move_assign.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc index f158a5b2a64..f158a5b2a64 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc index 58172dce213..58172dce213 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc index c323d64bfb5..c323d64bfb5 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/3.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/move_assign.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc index a513c698f6e..a513c698f6e 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/assign/wchar_t/move_assign.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/insert/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc index 4a6695b2031..4a6695b2031 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/insert/char/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/insert/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc index 8330813412b..8330813412b 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/insert/char/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/insert/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc index 205e6d9dced..205e6d9dced 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/insert/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/insert/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc index 6040d1e040b..6040d1e040b 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/insert/wchar_t/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/char/pop_back.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc index 8667e4c553a..8667e4c553a 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/char/pop_back.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc index 75f5f508e63..75f5f508e63 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/wchar_t/pop_back.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc index a7a3b4b8862..a7a3b4b8862 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc index 231ccd7f471..231ccd7f471 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc index 15c4ff9ad57..15c4ff9ad57 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/3.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc index 056c194e0be..056c194e0be 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/4.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc index b8dedab517c..b8dedab517c 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/5.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/6.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc index f9004c011db..f9004c011db 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/char/6.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc index d05edcd5f5f..d05edcd5f5f 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc index a058816296c..a058816296c 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/2.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/3.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc index 2c7ca33ea55..2c7ca33ea55 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/3.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/4.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc index 33994180978..33994180978 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/4.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/5.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc index d248f1ed460..d248f1ed460 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/5.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/6.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc index 105248df98a..105248df98a 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/replace/wchar_t/6.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc diff --git a/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc b/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc new file mode 100644 index 00000000000..d4898b3d202 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <deque> + +void test01() +{ + std::deque<int> d1; + d1.emplace(d1.cbegin(), 1); +} diff --git a/libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc b/libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc new file mode 100644 index 00000000000..915aa688a91 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc @@ -0,0 +1,29 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <deque> + +void test01() +{ + std::deque<int> d1; + int n = 0; + d1.insert(d1.cbegin(), n); + d1.insert(d1.cbegin(), 1); +} diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc index ccb63ef83ee..9788b4d952d 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1714 } +// { dg-error "no matching" "" { target *-*-* } 1724 } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc index 0a5db6362b5..a85b5c3f9f8 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1647 } +// { dg-error "no matching" "" { target *-*-* } 1657 } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc index 7572322c6b4..162bdf0bf95 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1647 } +// { dg-error "no matching" "" { target *-*-* } 1657 } #include <deque> #include <utility> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc index b109d3896e4..7e8356fd763 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1798 } +// { dg-error "no matching" "" { target *-*-* } 1808 } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc new file mode 100644 index 00000000000..d5aef75d61e --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <list> + +void test01() +{ + std::list<int> l1; + l1.emplace(l1.cbegin(), 1); +} diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc new file mode 100644 index 00000000000..156bc0a58cb --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc @@ -0,0 +1,29 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <list> + +void test01() +{ + std::list<int> l1; + int n = 0; + l1.insert(l1.cbegin(), n); + l1.insert(l1.cbegin(), 1); +} diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc index 4ccd652bbd2..218b862e348 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1545 } +// { dg-error "no matching" "" { target *-*-* } 1559 } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc index 6bc01b7ec7c..3f0b74939b1 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1497 } +// { dg-error "no matching" "" { target *-*-* } 1511 } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc index 1f39056e376..b861f46fde2 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1497 } +// { dg-error "no matching" "" { target *-*-* } 1511 } #include <list> #include <utility> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc index 902f55ab2fd..fd38c0b36d6 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1497 } +// { dg-error "no matching" "" { target *-*-* } 1511 } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc new file mode 100644 index 00000000000..b8993d84342 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <vector> + +void test01() +{ + std::vector<bool> vb1; + vb1.insert(vb1.cbegin(), true); +} diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc new file mode 100644 index 00000000000..8e2a194ac17 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <vector> + +void test01() +{ + std::vector<int> v1; + v1.emplace(v1.cbegin(), 1); +} diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc new file mode 100644 index 00000000000..5e5ef9e3739 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc @@ -0,0 +1,29 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <vector> + +void test01() +{ + std::vector<int> v1; + int n = 0; + v1.insert(v1.cbegin(), n); + v1.insert(v1.cbegin(), 1); +} diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc index 2dbc60240a2..e9434677282 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1252 } +// { dg-error "no matching" "" { target *-*-* } 1264 } #include <vector> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc index 7fc56bd4286..ba14bcef2ad 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1178 } +// { dg-error "no matching" "" { target *-*-* } 1190 } #include <vector> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc index 6a374618ce5..c9ac43782c4 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1178 } +// { dg-error "no matching" "" { target *-*-* } 1190 } #include <vector> #include <utility> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc index 3f5abb903cb..343edc2c7f3 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1293 } +// { dg-error "no matching" "" { target *-*-* } 1305 } #include <vector> diff --git a/libstdc++-v3/testsuite/ext/vstring/assign/move_assign.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc index 5202909c23f..5202909c23f 100644 --- a/libstdc++-v3/testsuite/ext/vstring/assign/move_assign.cc +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/char/54577.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc index 979828bb10e..979828bb10e 100644 --- a/libstdc++-v3/testsuite/ext/vstring/modifiers/char/54577.cc +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/54577.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc index f514099972b..f514099972b 100644 --- a/libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/54577.cc +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc new file mode 100644 index 00000000000..223ab66ab7d --- /dev/null +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <ext/vstring.h> + +void test01() +{ + __gnu_cxx::__vstring vs1; + vs1.insert(vs1.cbegin(), '1'); +} diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc new file mode 100644 index 00000000000..57fee54fdc4 --- /dev/null +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <ext/vstring.h> + +void test01() +{ + __gnu_cxx::__wvstring wvs1; + wvs1.insert(wvs1.cbegin(), L'1'); +} diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/char/pop_back.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc index cec1d226079..cec1d226079 100644 --- a/libstdc++-v3/testsuite/ext/vstring/modifiers/char/pop_back.cc +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc index ee8de53a915..ee8de53a915 100644 --- a/libstdc++-v3/testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc new file mode 100644 index 00000000000..0838443db77 --- /dev/null +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc @@ -0,0 +1,30 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <ext/vstring.h> + +void test01() +{ + __gnu_cxx::__vstring vs1; + vs1.replace(vs1.cbegin(), vs1.cend(), vs1); + vs1.replace(vs1.cbegin(), vs1.cend(), "1", 1); + vs1.replace(vs1.cbegin(), vs1.cend(), "2"); + vs1.replace(vs1.cbegin(), vs1.cend(), 1, '3'); +} diff --git a/libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc b/libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc new file mode 100644 index 00000000000..a909c9ca5a4 --- /dev/null +++ b/libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc @@ -0,0 +1,30 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <ext/vstring.h> + +void test01() +{ + __gnu_cxx::__wvstring wvs1; + wvs1.replace(wvs1.cbegin(), wvs1.cend(), wvs1); + wvs1.replace(wvs1.cbegin(), wvs1.cend(), L"1", 1); + wvs1.replace(wvs1.cbegin(), wvs1.cend(), L"2"); + wvs1.replace(wvs1.cbegin(), wvs1.cend(), 1, L'3'); +} diff --git a/libstdc++-v3/testsuite/util/exception/safety.h b/libstdc++-v3/testsuite/util/exception/safety.h index c063c9bddb7..5ba9b13ce37 100644 --- a/libstdc++-v3/testsuite/util/exception/safety.h +++ b/libstdc++-v3/testsuite/util/exception/safety.h @@ -265,7 +265,7 @@ namespace __gnu_test : _F_erase_point(&_Tp::erase), _F_erase_range(&_Tp::erase) { } }; - // Specializations, old C++03 signatures. + // Specialization, old C++03 signature. template<typename _Tp1, typename _Tp2, typename _Tp3> struct erase_base<std::basic_string<_Tp1, _Tp2, _Tp3>> { @@ -280,24 +280,6 @@ namespace __gnu_test _F_erase_range(&container_type::erase) { } }; - template<typename _Tp1, typename _Tp2, typename _Tp3, - template <typename, typename, typename> class _Tp4> - struct erase_base<__gnu_cxx::__versa_string<_Tp1, _Tp2, _Tp3, _Tp4>> - { - typedef __gnu_cxx::__versa_string<_Tp1, _Tp2, _Tp3, _Tp4> - container_type; - typedef typename container_type::iterator iterator; - typedef typename container_type::const_iterator const_iterator; - - iterator (container_type::* _F_erase_point)(const_iterator); - iterator (container_type::* _F_erase_range)(const_iterator, - const_iterator); - - erase_base() - : _F_erase_point(&container_type::erase), - _F_erase_range(&container_type::erase) { } - }; - // Specialization, as forward_list has erase_after. template<typename _Tp1, typename _Tp2> struct erase_base<std::forward_list<_Tp1, _Tp2>> @@ -698,47 +680,7 @@ namespace __gnu_test insert_base() : _F_insert_point(&_Tp::insert) { } }; - // Specializations, old C++03 signatures. - template<typename _Tp1, typename _Tp2> - struct insert_base<std::deque<_Tp1, _Tp2>> - { - typedef std::deque<_Tp1, _Tp2> container_type; - typedef typename container_type::iterator iterator; - typedef typename container_type::value_type value_type; - - iterator (container_type::* _F_insert_point)(iterator, - const value_type&); - - insert_base() : _F_insert_point(&container_type::insert) { } - }; - - template<typename _Tp1, typename _Tp2> - struct insert_base<std::list<_Tp1, _Tp2>> - { - typedef std::list<_Tp1, _Tp2> container_type; - typedef typename container_type::iterator iterator; - typedef typename container_type::value_type value_type; - - iterator (container_type::* _F_insert_point)(iterator, - const value_type&); - - insert_base() : _F_insert_point(&container_type::insert) { } - }; - - template<typename _Tp1, typename _Tp2> - struct insert_base<std::vector<_Tp1, _Tp2>> - { - typedef std::vector<_Tp1, _Tp2> container_type; - typedef typename container_type::iterator iterator; - typedef typename container_type::value_type value_type; - - iterator (container_type::* _F_insert_point)(iterator, - const value_type&); - - insert_base() : _F_insert_point(&container_type::insert) { } - }; - - // Specialization, as string insertion has a different signature. + // Specialization, old C++03 signature. template<typename _Tp1, typename _Tp2, typename _Tp3> struct insert_base<std::basic_string<_Tp1, _Tp2, _Tp3>> { @@ -751,17 +693,19 @@ namespace __gnu_test insert_base() : _F_insert_point(&container_type::insert) { } }; - // Likewise for __versa_string. + // Specialization, by value. template<typename _Tp1, typename _Tp2, typename _Tp3, template <typename, typename, typename> class _Tp4> struct insert_base<__gnu_cxx::__versa_string<_Tp1, _Tp2, _Tp3, _Tp4>> { typedef __gnu_cxx::__versa_string<_Tp1, _Tp2, _Tp3, _Tp4> - container_type; - typedef typename container_type::iterator iterator; - typedef typename container_type::value_type value_type; + container_type; + typedef typename container_type::iterator iterator; + typedef typename container_type::const_iterator const_iterator; + typedef typename container_type::value_type value_type; - iterator (container_type::* _F_insert_point)(iterator, value_type); + iterator (container_type::* _F_insert_point)(const_iterator, + value_type); insert_base() : _F_insert_point(&container_type::insert) { } }; |