@@ -955,8 +955,8 @@ inline std::tuple<std::string, std::string, std::string> make_random_access_iter
955955 else
956956 {
957957 dereference_fn_def_src = std::format (
958- " extern \" C\" __device__ void {0}(const void* state, const void* x) {{\n "
959- " auto* typed_state = static_cast<const {1}*>(state);\n "
958+ " extern \" C\" __device__ void {0}(void* state, const void* x) {{\n "
959+ " auto* typed_state = static_cast<{1}*>(state);\n "
960960 " auto x_val = *static_cast<const {2}*>(x);\n "
961961 " *typed_state->data = x_val{3};\n "
962962 " }}" ,
@@ -1005,8 +1005,9 @@ inline std::tuple<std::string, std::string, std::string> make_counting_iterator_
10051005 iterator_state_name);
10061006
10071007 std::string dereference_fn_def_src = std::format (
1008- " extern \" C\" __device__ void {0}({1}* state, {2}* result) {{ \n "
1009- " *result = state->value;\n "
1008+ " extern \" C\" __device__ void {0}(const void* state, {2}* result) {{ \n "
1009+ " auto* typed_state = static_cast<const {1}*>(state);\n "
1010+ " *result = typed_state->value;\n "
10101011 " }}" ,
10111012 dereference_fn_name,
10121013 iterator_state_name,
@@ -1093,8 +1094,9 @@ inline std::tuple<std::string, std::string, std::string> make_reverse_iterator_s
10931094 if (kind == iterator_kind::INPUT)
10941095 {
10951096 dereference_fn_src = std::format (
1096- " extern \" C\" __device__ void {0}({1}* state, {2}* result) {{\n "
1097- " *result = (*state->data){3};\n "
1097+ " extern \" C\" __device__ void {0}(const void* state, {2}* result) {{\n "
1098+ " auto* typed_state = static_cast<const {1}*>(state);\n "
1099+ " *result = (*typed_state->data){3};\n "
10981100 " }}" ,
10991101 dereference_fn_name,
11001102 iterator_state_name,
@@ -1104,8 +1106,10 @@ inline std::tuple<std::string, std::string, std::string> make_reverse_iterator_s
11041106 else
11051107 {
11061108 dereference_fn_src = std::format (
1107- " extern \" C\" __device__ void {0}({1}* state, {2} x) {{\n "
1108- " *state->data = x{3};\n "
1109+ " extern \" C\" __device__ void {0}(void* state, const void* x) {{\n "
1110+ " auto* typed_state = static_cast<{1}*>(state);\n "
1111+ " auto x_val = *static_cast<const {2}*>(x);\n "
1112+ " *typed_state->data = x_val{3};\n "
11091113 " }}" ,
11101114 dereference_fn_name,
11111115 iterator_state_name,
@@ -1261,7 +1265,7 @@ extern "C" __device__ void {0}(const void* transform_it_state, {2}* result) {{
12611265 {7} base_result;
12621266 {4}(&(typed_state->base_it_state), &base_result);
12631267 *result = {3}(
1264- &(typed_state->functor_state),
1268+ const_cast<decltype(typed_state->functor_state)*>( &(typed_state->functor_state) ),
12651269 base_result
12661270 );
12671271}}
@@ -1434,7 +1438,7 @@ inline std::tuple<std::string, std::string, std::string> make_discard_iterator_s
14341438 if (kind == iterator_kind::INPUT)
14351439 {
14361440 dereference_fn_def_src = std::format (
1437- " extern \" C\" __device__ void {0}({1} * /*state*/, {2}* /*result*/) {{\n "
1441+ " extern \" C\" __device__ void {0}(const void * /*state*/, {2}* /*result*/) {{\n "
14381442 " }}" ,
14391443 dereference_fn_name,
14401444 iterator_state_name,
@@ -1443,7 +1447,7 @@ inline std::tuple<std::string, std::string, std::string> make_discard_iterator_s
14431447 else
14441448 {
14451449 dereference_fn_def_src = std::format (
1446- " extern \" C\" __device__ void {0}({1} * /*state*/, {2} /*x*/) {{\n "
1450+ " extern \" C\" __device__ void {0}(void * /*state*/, const void* /*x*/) {{\n "
14471451 " }}" ,
14481452 dereference_fn_name,
14491453 iterator_state_name,
0 commit comments