10 #ifndef vtk_m_cont_Invoker_h 
   11 #define vtk_m_cont_Invoker_h 
   26 using scatter_or_mask = std::integral_constant<bool,
 
   27                                                vtkm::worklet::internal::is_mask<T>::value ||
 
   28                                                  vtkm::worklet::internal::is_scatter<T>::value>;
 
   64   template <
typename Worklet,
 
   67             typename std::enable_if<detail::scatter_or_mask<T>::value, 
int>::type* = 
nullptr>
 
   68   inline void operator()(Worklet&& worklet, T&& scatterOrMask, Args&&... args)
 const 
   70     using WorkletType = vtkm::internal::remove_cvref<Worklet>;
 
   71     using DispatcherType = 
typename WorkletType::template Dispatcher<WorkletType>;
 
   73     DispatcherType dispatcher(worklet, scatterOrMask);
 
   74     dispatcher.SetDevice(this->
DeviceId);
 
   75     dispatcher.Invoke(std::forward<Args>(args)...);
 
   88     typename std::enable_if<detail::scatter_or_mask<T>::value && detail::scatter_or_mask<U>::value,
 
   89                             int>::type* = 
nullptr>
 
   95     using WorkletType = vtkm::internal::remove_cvref<Worklet>;
 
   96     using DispatcherType = 
typename WorkletType::template Dispatcher<WorkletType>;
 
   98     DispatcherType dispatcher(worklet, scatterOrMaskA, scatterOrMaskB);
 
   99     dispatcher.SetDevice(this->
DeviceId);
 
  100     dispatcher.Invoke(std::forward<Args>(args)...);
 
  107   template <
typename Worklet,
 
  110             typename std::enable_if<!detail::scatter_or_mask<T>::value, 
int>::type* = 
nullptr>
 
  111   inline void operator()(Worklet&& worklet, T&& t, Args&&... args)
 const 
  113     using WorkletType = vtkm::internal::remove_cvref<Worklet>;
 
  114     using DispatcherType = 
typename WorkletType::template Dispatcher<WorkletType>;
 
  116     DispatcherType dispatcher(worklet);
 
  117     dispatcher.SetDevice(this->
DeviceId);
 
  118     dispatcher.Invoke(std::forward<T>(t), std::forward<Args>(args)...);