[PATCH] libstdc++: Implement integer-class types as defined in [iterator.concept.winc]

Jonathan Wakely jwakely@redhat.com
Wed Aug 19 09:47:04 GMT 2020

On 11/08/20 11:38 -0400, Patrick Palka via Libstdc++ wrote:
>Subject: [PATCH] libstdc++: integer-class types as per [iterator.concept.winc]
>This implements signed and unsigned integer-class types, whose width is
>one bit larger than the widest supported signed and unsigned integral
>type respectively.  In our case this is either __int128 and unsigned
>__int128, or long long and unsigned long long.
>Internally, the two integer-class types are represented as a largest
>supported unsigned integral type plus one extra bit.  The signed
>integer-class type is represented in two's complement form with the
>extra bit acting as the sign bit.
>	* include/Makefile.am (bits_headers): Add new header
>	<bits/max_size_type.h>.
>	* include/Makefile.in: Regenerate.
>	* include/bits/iterator_concepts.h
>	(ranges::__detail::__max_diff_type): Remove definition, replace
>	with forward declaration of class __max_diff_type.
>	(__detail::__max_size_type): Remove definition, replace with
>	forward declaration of class __max_size_type.
>	(__detail::__is_unsigned_int128, __is_signed_int128,
>	__is_int128): New concepts.

According to GNU changelog conventions you should close the parens at
the end of the first line and reopen them on the next i.e.

	(__detail::__is_unsigned_int128, __is_signed_int128)
	(__is_int128): New concepts.

See the paragraph beginning "Break long lists of function names" at

Apart from that, this looks great. Please push, thanks!

More information about the Gcc-patches mailing list