2828template <class CharT >
2929struct TestBase
3030{
31- __host__ __device__ static constexpr const CharT* range_data ()
31+ __host__ __device__ constexpr const CharT* range_data () const
3232 {
33- return TEST_STRLIT (CharT, " range_data " ) ;
33+ return range_data_ ;
3434 }
35- __host__ __device__ static constexpr cuda::std::size_t range_size ()
35+ __host__ __device__ constexpr cuda::std::size_t range_size () const
3636 {
3737 return cuda::std::char_traits<CharT>::length (range_data ());
3838 }
39- __host__ __device__ static constexpr const CharT* conv_data ()
39+ __host__ __device__ constexpr const CharT* conv_data () const
4040 {
41- return TEST_STRLIT (CharT, " conv_data " ) ;
41+ return conv_data_ ;
4242 }
4343
4444 __host__ __device__ constexpr const CharT* begin () const
@@ -49,6 +49,9 @@ struct TestBase
4949 {
5050 return range_data () + range_size ();
5151 }
52+
53+ const CharT* range_data_;
54+ const CharT* conv_data_;
5255};
5356
5457template <class CharT >
@@ -57,6 +60,9 @@ __host__ __device__ constexpr void test_from_range()
5760 using SV = cuda::std::basic_string_view<CharT>;
5861 using TB = TestBase<CharT>;
5962
63+ const auto range_data = TEST_STRLIT (CharT, " range_data" );
64+ const auto conv_data = TEST_STRLIT (CharT, " conv_data" );
65+
6066 // 1. test construction from cuda::std::array
6167 {
6268 cuda::std::array<CharT, 3 > arr{TEST_CHARLIT (CharT, ' f' ), TEST_CHARLIT (CharT, ' o' ), TEST_CHARLIT (CharT, ' o' )};
@@ -80,9 +86,9 @@ __host__ __device__ constexpr void test_from_range()
8086 static_assert (cuda::std::is_constructible_v<SV, NonConstConversionOperator>);
8187 static_assert (!cuda::std::is_convertible_v<const NonConstConversionOperator&, SV>);
8288
83- NonConstConversionOperator nc{};
89+ NonConstConversionOperator nc{range_data, conv_data };
8490 SV sv = nc;
85- assert (sv == TB:: conv_data ());
91+ assert (sv == nc. conv_data ());
8692 }
8793
8894 // 3. test construction from a type with a const conversion operator
@@ -99,14 +105,14 @@ __host__ __device__ constexpr void test_from_range()
99105 static_assert (cuda::std::is_constructible_v<SV, const ConstConversionOperator&>);
100106
101107 {
102- ConstConversionOperator cv{};
108+ ConstConversionOperator cv{range_data, conv_data };
103109 SV sv = cv;
104- assert (sv == TB:: conv_data ());
110+ assert (sv == cv. conv_data ());
105111 }
106112 {
107- const ConstConversionOperator cv{};
113+ const ConstConversionOperator cv{range_data, conv_data };
108114 SV sv = cv;
109- assert (sv == TB:: conv_data ());
115+ assert (sv == cv. conv_data ());
110116 }
111117 }
112118
@@ -125,14 +131,14 @@ __host__ __device__ constexpr void test_from_range()
125131 static_assert (cuda::std::is_constructible_v<SV, const DeletedConversionOperator>);
126132
127133 {
128- DeletedConversionOperator cv{};
134+ DeletedConversionOperator cv{range_data, conv_data };
129135 SV sv = SV (cv);
130- assert (sv == TB:: range_data ());
136+ assert (sv == cv. range_data ());
131137 }
132138 {
133- const DeletedConversionOperator cv{};
139+ const DeletedConversionOperator cv{range_data, conv_data };
134140 SV sv = SV (cv);
135- assert (sv == TB:: range_data ());
141+ assert (sv == cv. range_data ());
136142 }
137143 }
138144
@@ -151,14 +157,14 @@ __host__ __device__ constexpr void test_from_range()
151157 static_assert (cuda::std::is_constructible_v<SV, const DeletedConstConversionOperator>);
152158
153159 {
154- DeletedConstConversionOperator cv{};
160+ DeletedConstConversionOperator cv{range_data, conv_data };
155161 SV sv = SV (cv);
156- assert (sv == TB:: range_data ());
162+ assert (sv == cv. range_data ());
157163 }
158164 {
159- const DeletedConstConversionOperator cv{};
165+ const DeletedConstConversionOperator cv{range_data, conv_data };
160166 SV sv = SV (cv);
161- assert (sv == TB:: range_data ());
167+ assert (sv == cv. range_data ());
162168 }
163169 }
164170
0 commit comments