@@ -149,23 +149,39 @@ static constexpr bool check_kernel_lambda_takes_args() {
149
149
return check_fn_signature<std::remove_reference_t <F>, void (Args...)>::value;
150
150
}
151
151
152
- // Type traits to find out if kernal lambda has kernel_handler argument
152
+ // isKernelLambdaCallableWithKernelHandlerImpl checks if LambdaArgType is void
153
+ // (e.g., in single_task), and based on that, calls
154
+ // check_kernel_lambda_takes_args with proper set of arguments. Also this type
155
+ // trait workarounds compilation error which happens only with msvc.
153
156
154
- template <typename KernelType, typename LambdaArgType = void ,
157
+ template <typename KernelType, typename LambdaArgType,
155
158
typename std::enable_if_t <std::is_same<LambdaArgType, void >::value>
156
159
* = nullptr >
157
- constexpr bool isKernelLambdaCallableWithKernelHandler () {
160
+ constexpr bool isKernelLambdaCallableWithKernelHandlerImpl () {
158
161
return check_kernel_lambda_takes_args<KernelType, kernel_handler>();
159
162
}
160
163
161
164
template <typename KernelType, typename LambdaArgType,
162
165
typename std::enable_if_t <!std::is_same<LambdaArgType, void >::value>
163
166
* = nullptr >
164
- constexpr bool isKernelLambdaCallableWithKernelHandler () {
167
+ constexpr bool isKernelLambdaCallableWithKernelHandlerImpl () {
165
168
return check_kernel_lambda_takes_args<KernelType, LambdaArgType,
166
169
kernel_handler>();
167
170
}
168
171
172
+ // Type traits to find out if kernal lambda has kernel_handler argument
173
+
174
+ template <typename KernelType>
175
+ constexpr bool isKernelLambdaCallableWithKernelHandler () {
176
+ return check_kernel_lambda_takes_args<KernelType, kernel_handler>();
177
+ }
178
+
179
+ template <typename KernelType, typename LambdaArgType>
180
+ constexpr bool isKernelLambdaCallableWithKernelHandler () {
181
+ return isKernelLambdaCallableWithKernelHandlerImpl<KernelType,
182
+ LambdaArgType>();
183
+ }
184
+
169
185
// Helpers for running kernel lambda on the host device
170
186
171
187
template <typename KernelType,
0 commit comments