18 #ifndef viskores_cont_internal_Hints_h
19 #define viskores_cont_internal_Hints_h
44 template <
typename Derived_,
typename Tag_,
typename DeviceList_>
47 using Derived = Derived_;
49 using DeviceList = DeviceList_;
52 struct HintTagThreadsPerBlock
60 template <viskores::IdComponent MaxThreads_,
typename DeviceList_ = viskores::ListUniversal>
61 struct HintThreadsPerBlock
62 : HintBase<HintThreadsPerBlock<MaxThreads_, DeviceList_>, HintTagThreadsPerBlock, DeviceList_>
72 template <
typename... Hints>
79 struct IsHintList : std::false_type
82 template <
typename... Hints>
83 struct IsHintList<HintList<Hints...>> : std::true_type
93 #define VISKORES_IS_HINT_LIST(T) \
94 VISKORES_STATIC_ASSERT(::viskores::cont::internal::IsHintList<T>::value)
99 template <
typename Device,
typename H
intTag>
100 struct FindHintOperators
104 template <
typename H
int>
106 viskores::internal::meta::And<std::is_same<typename Hint::Tag, HintTag>,
108 template <
typename Found,
typename Next>
109 using ReduceOperator =
typename std::conditional<HintMatches<Next>::value, Next, Found>::type;
124 template <
typename HList,
typename DefaultH
int,
typename Device>
126 typename HList::List,
127 detail::FindHintOperators<Device, typename DefaultHint::Tag>::template ReduceOperator,
134 #endif // viskores_cont_internal_Hints_h