Commit Graph

30 Commits

Author SHA1 Message Date
Jonathan Wakely
bd2420f8fa libstdc++: Add comparison operators to sequence containers
Some more C++20 changes from P1614R2, "The Mothership has Landed".

This implements <=> for sequence containers (and the __normal_iterator
and _Pointer_adapter class templates).

	* include/bits/forward_list.h (forward_list): Define operator<=> and
	remove redundant comparison operators for C++20.
	* include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
	* include/bits/stl_deque.h (deque): Likewise.
	* include/bits/stl_iterator.h (__normal_iterator): Likewise.
	* include/bits/stl_list.h (list): Likewise.
	* include/bits/stl_vector.h (vector): Likewise.
	* include/debug/deque (__gnu_debug::deque): Likewise.
	* include/debug/forward_list (__gnu_debug::forward_list): Likewise.
	* include/debug/list (__gnu_debug::list): Likewise.
	* include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
	Likewise.
	* include/debug/vector (__gnu_debug::vector): Likewise.
	* include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
	operator<=> for C++20.
	* testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
	* testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
	* testsuite/23_containers/list/cmp_c++20.cc: New test.
	* testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
	* testsuite/23_containers/vector/cmp_c++20.cc: New test.
2020-04-17 23:41:04 +01:00
Jonathan Wakely
c8dd2446f5 libstdc++: Implement P1878R1 "Constraining Readable Types"
* include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
	Use remove_cvref_t.
	(readable_traits): Rename to indirectly_readable_traits.
	(readable): Rename to indirectly_readable.
	(writable): Rename to indirectly_writable.
	(__detail::__iter_exchange_move): Do not use remove_reference_t.
	(indirectly_swappable): Adjust requires expression parameter types.
	expression.
	* include/bits/ranges_algo.h (ranges::transform, ranges::replace)
	(ranges::replace_if, ranges::generate_n, ranges::generate)
	(ranges::remove): Use new name for writable.
	* include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
	Use new name for readable.
	* include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
	new name for readable_traits.
	* testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
	* testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
	new definition of indirectly_readable.
2020-02-07 16:58:43 +00:00
Jonathan Wakely
1a7886386c libstdc++: Fix <ext/pointer.h> incompatibilities with C++20
The equality operators for _ExtPtr_allocator are defined as non-const
member functions, which causes ambiguities in C++20 due to the
synthesized operator!= candidates. They should always have been const.

The _Pointer_adapter class template has both value_type and element_type
members, which makes readable_traits<_Pointer_adapter<T>> ambiguous. The
intended workaround is to add a specialization of readable_traits.

	* include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
	(_ExtPtr_allocator::operator!=): Add missing const qualifiers.
	* include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
	partial specialization to disambiguate the two constrained
	specializations.

From-SVN: r280067
2020-01-09 21:31:55 +00:00
Jakub Jelinek
8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Jakub Jelinek
a554497024 Update copyright years.
From-SVN: r267494
2019-01-01 13:31:55 +01:00
Jonathan Wakely
4a559e91b1 Fix __gnu_cxx::_Pointer_adapter for long long arithmetic
* include/ext/pointer.h (_Pointer_adapter): Define operators for
	pointer arithmetic using long long offsets.
	* testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
	long long values.

From-SVN: r263976
2018-08-30 13:24:06 +01:00
Jonathan Wakely
77a6c969e9 Replace safe bool idiom with explicit operator bool
* include/ext/pointer.h [__cplusplus >= 201103L]
	(_Pointer_adapter::operator bool): Add explicit conversion operator
	to replace safe bool idiom.

From-SVN: r263162
2018-07-31 15:55:36 +01:00
Jakub Jelinek
85ec4feb11 Update copyright years.
From-SVN: r256169
2018-01-03 11:03:58 +01:00
Jonathan Wakely
2ae27b7076 PR69301 don't assume atomic<T> can default construct T
PR libstdc++/69301
	* include/std/atomic (atomic<T>::load, atomic<T>::exchange): Use
	aligned buffer instead of default-initialized variable.
	* testsuite/29_atomics/atomic/69301.cc: New test.
	* include/experimental/memory (observer_ptr::release): Use reserved
	name.
	* include/ext/pointer.h (_Pointer_adapter::operator++(int))
	(_Pointer_adapter::operator--(int)): Likewise.

From-SVN: r244588
2017-01-18 18:36:45 +00:00
Jakub Jelinek
cbe34bb5ed Update copyright years.
From-SVN: r243994
2017-01-01 13:07:43 +01:00
Jakub Jelinek
818ab71a41 Update copyright years.
From-SVN: r232055
2016-01-04 15:30:50 +01:00
Jakub Jelinek
5624e564d2 Update copyright years.
From-SVN: r219188
2015-01-05 13:33:28 +01:00
Richard Sandiford
aa118a03c4 Update copyright years in libstdc++-v3/
From-SVN: r206301
2014-01-02 22:30:10 +00:00
Jonathan Wakely
f8c370af2c re PR c++/59173 (Alias template in partial specialization finds name from primary template)
PR c++/59173
	* include/ext/pointer.h (pointer_traits<>::rebind<>): Add template
	keyword in nested name.

From-SVN: r205114
2013-11-20 13:39:33 +00:00
Richard Sandiford
405feeb871 Update copyright in libstdc++-v3.
From-SVN: r195701
2013-02-03 17:54:05 +00:00
Jonathan Wakely
3c523cf8a8 re PR libstdc++/55631 (Several ext/ headers can not be #included on their own)
PR libstdc++/55631
	* include/ext/alloc_traits.h: Include missing header.
	* include/ext/pointer.h: Likewise.
	* include/ext/string_conversions.h: Require C++11.
	* libsupc++/initializer_list: Reindent.

From-SVN: r194429
2012-12-11 22:28:01 +00:00
Jason Merrill
734f50238f * many: Replace uses of __GXX_EXPERIMENTAL_CXX0X__ with __cplusplus.
From-SVN: r193392
2012-11-10 12:27:22 -05:00
Dodji Seketeli
bd0424fa93 PR c++/51027 - accepts alias-declaration without ';'
gcc/cp/

	* parser.c (cp_parser_alias_declaration): Require ';' at the end
	of the declaration.

libstdc++-v3/

	* include/ext/pointer.h (rebind): Append missing ';'.

gcc/testsuite

	* g++.dg/cpp0x/alias-decl-12.C: New test.
	* g++.dg/ext/alias-decl-attr4.C: Append missing ';'.

From-SVN: r181195
2011-11-09 09:00:58 +01:00
Jonathan Wakely
7579d15b58 ptr_traits.h (__rebind): Replace with...
* include/bits/ptr_traits.h (__rebind): Replace with...
	(rebind): Implement using alias-declaration.
	* include/ext/pointer.h (__rebind): Replace with...
	(rebind): Implement using alias-declaration.
	* include/bits/alloc_traits.h (__rebind_alloc, __rebind_traits):
	Replace with...
	(rebind_alloc, rebind_traits): Implement using alias-declaration.
	* include/ext/alloc_traits.h (rebind): Use rebind_alloc instead of
	__rebind_alloc.
	* include/std/scoped_allocator (rebind): Likewise.

From-SVN: r181139
2011-11-08 00:33:45 +00:00
Jonathan Wakely
eece716393 cast.h: Fix typo in include guard.
2011-07-09  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/ext/cast.h: Fix typo in include guard.
	* include/ext/pointer.h (_Unqualified_type): Remove redundant
	partial specializations for volatile types. Fix typos in comments.
	(pointer_traits<_Pointer_adaptor<Tp>>::pointer_to): Define.

From-SVN: r176075
2011-07-09 11:28:56 +01:00
Jonathan Wakely
428319bb9a ptr_traits.h (pointer_traits): Fix typos.
2011-06-05  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/ptr_traits.h (pointer_traits): Fix typos.
	* include/ext/pointer.h (pointer_traits): Add partial specialization
	for _Pointer_adapter.

From-SVN: r174661
2011-06-05 21:28:38 +01:00
Benjamin Kosnik
12ffa22844 PR libstdc++/36104 part four
2011-01-30  Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/36104 part four
	* include/bits/c++config (_GLIBCXX_STD): Remove.
	(_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C.
	(_GLIBCXX_P): Now _GLIBCXX_STD_A.
	(_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL,
	 _GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove.
	(_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL,
	 _GLIBCXX_INLINE_PROFILE): Remove.
	(_GLIBCXX_BEGIN_NAMESPACE(X)): Remove.
	(_GLIBCXX_END_NAMESPACE): Remove.
	(_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove.
	(_GLIBCXX_END_NESTED_NAMESPACE): Remove.
	(_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add.
	(_GLIBCXX_END_NAMESPACE_ALGO): Add.
	(_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add.
	(_GLIBCXX_END_NAMESPACE_CONTAINER): Add.
	(_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add.
	(_GLIBCXX_END_NAMESPACE_VERSION): Add.
	(_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL.
	(_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL.
	(_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY.
	* include/*: Use new macros for namespace scope.
	* config/*: Same.
	* src/*: Same.

	* src/Makefile.am (sources): Remove debug_list.cc, add
	compatibility-debug_list-2.cc.
	(parallel_sources): Remove parallel_list.cc, add
	compatibility-parallel_list-2.cc.
	(compatibility-parallel_list-2.[o,lo]): New rule.
	* src/Makefile.in: Regenerate.
	* src/debug_list.cc: Remove.
	* src/parallel_list.cc: Remove.
	* src/compatibility-list-2.cc: New.
	* src/compatibility-debug_list-2.cc: New.
	* src/compatibility-parallel_list-2.cc: New.

	* doc/doxygen/user.cfg.in: Adjust macros.

	* testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros.
	* testsuite/20_util/declval/requirements/1_neg.cc: Same.
	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same.
	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same.
	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same.
	* testsuite/20_util/forward/c_neg.cc: Same.
	* testsuite/20_util/forward/f_neg.cc: Same.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same.
	* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same.
	* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same.
	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_1_neg.cc: Same.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_2_neg.cc: Same.
	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same.
	* testsuite/23_containers/forward_list/capacity/1.cc: Same.
	* testsuite/23_containers/forward_list/requirements/dr438/
	assign_neg.cc: Same.
	* testsuite/23_containers/forward_list/requirements/dr438/
	constructor_1_neg.cc: Same.
	* testsuite/23_containers/forward_list/requirements/dr438/
	constructor_2_neg.cc: Same.
	* testsuite/23_containers/forward_list/requirements/dr438/
	insert_neg.cc: Same.
	* testsuite/23_containers/list/capacity/29134.cc: Same.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_1_neg.cc: Same.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_2_neg.cc: Same.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same.
	* testsuite/23_containers/vector/bool/capacity/29134.cc: Same.
	* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_1_neg.cc: Same.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_2_neg.cc: Same.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same.
	* testsuite/25_algorithms/sort/35588.cc: Same.
	* testsuite/27_io/ios_base/cons/assign_neg.cc: Same.
	* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Same.
	* testsuite/ext/profile/profiler_algos.cc: Same.
	* testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same.
	* testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same.
	* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same.
	* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same.
	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same.

From-SVN: r169421
2011-01-30 22:39:36 +00:00
Benjamin Kosnik
f910786b98 *: Use headername alias to associate private includes to public includes.
2010-11-18  Benjamin Kosnik  <bkoz@redhat.com>

	* config/*/*: Use headername alias to associate private includes
	to public includes.
	* include/*/*: Same.

	* scripts/run_doxygen: Update for doxygen 1.7.2.
	* doc/doxygen/user.cfg.in: Same.
	* doc/doxygen/TODO: Remove.

	* testsuite/*/std_c++0x_neg.cc: Adjust line number.

From-SVN: r168046
2010-12-19 09:21:16 +00:00
Jonathan Wakely
d156668fd7 pointer.h (_Pointer_adapter::operator++): Remove name of unused parameter.
2010-06-06  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/ext/pointer.h (_Pointer_adapter::operator++): Remove
	name of unused parameter.

From-SVN: r160351
2010-06-06 22:46:38 +01:00
Benjamin Kosnik
b4d6477637 pointer.h: Add pragma system_header, use _GLIBCXX_USE_LONG_LONG, macro cleanup.
2009-08-14  Benjamin Kosnik  <bkoz@redhat.com>

	* include/ext/pointer.h: Add pragma system_header, use
	_GLIBCXX_USE_LONG_LONG, macro cleanup.

From-SVN: r150762
2009-08-14 16:51:01 +00:00
Benjamin Kosnik
12d74f0d0d extc++.h: Don't include TR1 if C++0x.
2009-08-11  Benjamin Kosnik  <bkoz@redhat.com>

	* include/precompiled/extc++.h: Don't include TR1 if C++0x.
	* include/precompiled/stdc++.h: Don't include cassert if
	_GLIBCXX_NO_ASSERT defined.
	* include/ext/cast.h (_GLIBCXX_BEGIN_NAMESPACE): Remove extra
	semi-colon.
	* include/ext/pointer.h (_GCC_CXX_POINTER_COMPARISON_OPERATION_SET):
	Same.

	* testsuite/17_intro/headers/all.cc: Move into dialect-specific
	directory.
	* testsuite/17_intro/headers/all_pedantic_errors.cc: Same.
	* testsuite/17_intro/headers/all_assert_neg.cc: Same.
	* testsuite/17_intro/headers/all_c++200x_compatibility.cc: Same.

	* testsuite/17_intro/headers/c++1998/all.cc: Use extc++.h include.
	* testsuite/17_intro/headers/c++1998/stdc++.cc: Converted all.cc,
	use stdc++.h include.
	* testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc: Same.
	* testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Same.
	* testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc: Same.
	* testsuite/17_intro/headers/c++1998/all_no_exceptions.cc: New.
	* testsuite/17_intro/headers/c++1998/all_multiple_inclusion.cc: To...
	* testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
	...this.
	* testsuite/17_intro/headers/c++200x/all.cc: To...
	* testsuite/17_intro/headers/c++200x/stdc++.cc: ..this.
	* testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: To...
	* testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc:
	...this.
	* testsuite/17_intro/headers/c++200x/all_no_exceptions.cc: New.
	* testsuite/17_intro/headers/c++200x/all_pedantic_errors.cc: New.

From-SVN: r150672
2009-08-12 00:56:12 +00:00
Jakub Jelinek
748086b7b2 Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception.
From-SVN: r145841
2009-04-09 17:00:19 +02:00
Richard Guenther
9c01326d9a re PR libstdc++/38720 (_Relative_pointer_impl invokes undefined behavior)
2009-01-04  Richard Guenther  <rguenther@suse.de>

	PR libstdc++/38720
	* include/ext/pointer.h (_Relative_pointer_impl): Use an unsigned
	integer type for storage, arithmetic and comparisons.
	* testsuite/ext/ext_pointer/1_neg.cc: Adjust line numbers.

From-SVN: r143058
2009-01-04 19:51:18 +00:00
Paolo Carlini
8d8a4e9d3d extptr_allocator.h: Minor tweaks.
2008-11-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/ext/extptr_allocator.h: Minor tweaks.
	* include/ext/pointer.h: Likewise.
	* include/ext/cast.h: Likewise.

From-SVN: r141764
2008-11-11 12:15:59 +00:00
Paolo Carlini
8d200e06a4 2008-11-07 Paolo Carlini <paolo.carlini@oracle.com>
* Complete last commit.

From-SVN: r141676
2008-11-07 15:44:20 +00:00