On Mon, 7 Jul 2025 at 09:59, Tomasz Kaminski <[email protected]> wrote:
>
>
> On Fri, Jul 4, 2025 at 10:37 AM Luc Grosheintz <[email protected]>
> wrote:
>>
>> The class IntLike is used for testing extents with user-defined classes
>> that convert to int. This commit places the class into a separate header
>> file. This allows it to be reused across different parts of the mdspan
>> related testsuite.
>>
>> libstdc++-v3/ChangeLog:
>>
>> * testsuite/23_containers/mdspan/extents/custom_integer.cc:
>> Delete IntLike and include "int_like.h".
>> * testsuite/23_containers/mdspan/extents/int_like.h: Add
>> IntLike.
>>
>> Signed-off-by: Luc Grosheintz <[email protected]>
>> ---
>
> LGTM, outside of using header guards. I can change that locally.
Yes please. OK for trunk with the guards.
>>
>> .../mdspan/extents/custom_integer.cc | 27 +-----------------
>> .../23_containers/mdspan/extents/int_like.h | 28 +++++++++++++++++++
>> 2 files changed, 29 insertions(+), 26 deletions(-)
>> create mode 100644
>> libstdc++-v3/testsuite/23_containers/mdspan/extents/int_like.h
>>
>> diff --git
>> a/libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
>> b/libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
>> index 2907ad12ae7..404755bd5ac 100644
>> --- a/libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
>> +++ b/libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
>> @@ -2,38 +2,13 @@
>> #include <mdspan>
>>
>> #include <testsuite_hooks.h>
>> +#include "int_like.h"
>>
>> // Test construction from a custom integer-like object, that has
>> // no copy/move ctor or copy/move assignment operator.
>>
>> constexpr size_t dyn = std::dynamic_extent;
>>
>> -class IntLike
>> -{
>> -public:
>> - explicit
>> - IntLike(int i)
>> - : _M_i(i)
>> - { }
>> -
>> - IntLike() = delete;
>> - IntLike(const IntLike&) = delete;
>> - IntLike(IntLike&&) = delete;
>> -
>> - const IntLike&
>> - operator=(const IntLike&) = delete;
>> -
>> - const IntLike&
>> - operator=(IntLike&&) = delete;
>> -
>> - constexpr
>> - operator int() const noexcept
>> - { return _M_i; }
>> -
>> -private:
>> - int _M_i;
>> -};
>> -
>> static_assert(std::is_convertible_v<IntLike, int>);
>> static_assert(std::is_nothrow_constructible_v<int, IntLike>);
>>
>> diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/extents/int_like.h
>> b/libstdc++-v3/testsuite/23_containers/mdspan/extents/int_like.h
>> new file mode 100644
>> index 00000000000..7785d2ffe95
>> --- /dev/null
>> +++ b/libstdc++-v3/testsuite/23_containers/mdspan/extents/int_like.h
>> @@ -0,0 +1,28 @@
>> +#pragma once
>
> Please use header guards instead of pragma once.
>>
>> +
>> +class IntLike
>> +{
>> +public:
>> + explicit
>> + IntLike(int i)
>> + : _M_i(i)
>> + { }
>> +
>> + IntLike() = delete;
>> + IntLike(const IntLike&) = delete;
>> + IntLike(IntLike&&) = delete;
>> +
>> + const IntLike&
>> + operator=(const IntLike&) = delete;
>> +
>> + const IntLike&
>> + operator=(IntLike&&) = delete;
>> +
>> + constexpr
>> + operator int() const noexcept
>> + { return _M_i; }
>> +
>> +private:
>> + int _M_i;
>> +};
>> +
>> --
>> 2.49.0
>>