On Tue, 8 Jul 2025, 08:04 Tomasz Kaminski, <tkami...@redhat.com> wrote:

> LGTM. Thanks.
>
> On Mon, Jul 7, 2025 at 11:09 PM Nathan Myers <n...@cantrip.org> wrote:
>
>> This adds the new bitset constructor from string_view
>> defined in P2697 to the debug version of the type.
>>
>> libstdc++-v3/Changelog:
>>         PR libstdc++/119742
>>         * include/debug/bitset: Add new ctor.
>> ---
>>  libstdc++-v3/include/debug/bitset | 12 ++++++++++++
>>  1 file changed, 12 insertions(+)
>>
>> diff --git a/libstdc++-v3/include/debug/bitset
>> b/libstdc++-v3/include/debug/bitset
>> index ad9b7b5c4b0..43656a4efd3 100644
>> --- a/libstdc++-v3/include/debug/bitset
>> +++ b/libstdc++-v3/include/debug/bitset
>> @@ -164,6 +164,18 @@ namespace __debug
>>                _CharT __zero, _CharT __one = _CharT('1'))
>>         : _Base(__str, __pos, __n, __zero, __one) { }
>>
>> +#ifdef __cpp_lib_bitset // ... from string_view
>> +      template<class _CharT, class _Traits>
>> +       constexpr explicit
>> +       bitset(std::basic_string_view<_CharT, _Traits> __s,
>> +         std::basic_string_view<_CharT, _Traits>::size_type __position =
>> 0,
>> +         std::basic_string_view<_CharT, _Traits>::size_type __n =
>> +           std::basic_string_view<_CharT, _Traits>::npos,
>> +         _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'))
>> +       : _Base(__s.data() + std::min(__position, __s.size()),
>> +           std::min(__n, __s.size()), __zero, __one) { }
>> +#endif
>>
>
The base class needs to repeat those length checks anyway, so is there a
reason to do the std::min calls here rather than just pass the arguments to
the base unchanged?


+
>>        _GLIBCXX23_CONSTEXPR
>>        bitset(const _Base& __x) : _Base(__x) { }
>>
>> --
>> 2.50.0
>>
>>

Reply via email to