Allison Vacanti
ab8fc13aac
Simplify enum_type_list usage.
...
Using C++17 auto template parameters enables two improvements:
1. Enum type no longer needed in `enum_type_list`:
```
// Old:
nvbench::enum_type_list<my_enum, my_enum::value1, my_enum::value2, ...>
// New:
nvbench::enum_type_list<my_enum::value1, my_enum::value2, ...>
```
2. New `nvbench::enum_type` helper cuts down on verbosity when writing
benchmarks
```
// Old
template <typename T, my_enum_a MyEnumA, my_enum_b MyEnumB>
void my_bench(nvbench::state &state,
nvbench::type_list<T,
std::integral_constant<my_enum_a,
MyEnumA>,
std::integral_constant<my_enum_b,
MyEnumB>>)
{ ... }
// New
template <typename T, my_enum_a MyEnumA, my_enum_b MyEnumB>
void my_bench(nvbench::state &state,
nvbench::type_list<T,
nvbench::enum_type<MyEnumA>,
nvbench::enum_type<MyEnumB>>)
{ ... }
```
2021-03-18 02:59:51 -04:00