On Fri, Jun 27, 2025 at 11:16 AM Luc Grosheintz <luc.groshei...@gmail.com> 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 <luc.groshei...@gmail.com> > --- > LGTM. > .../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 > + > +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 > >