我有以下功能:
template <typename T, T... Ts> T random_value(default_random_engine &rnd)
{
static constexpr T values [] { Ts... };
static uniform_int_distribution<size_t> distribution(0, sizeof...(Ts) - 1);
return values[distribution(rnd)];
}
这就是所谓的:
MyEnum val = random_value<MyEnum, MyEnum::val1, MyEnum::val2, MyEnum::val3>(rnd);
是否可以以不需要明确指定 T 的方式重新定义它?所以它被称为:
MyEnum val = random_value<MyEnum::val1, MyEnum::val2, MyEnum::val3>(rnd);
最佳答案
目前还没有,但 C++17 中添加的新 auto
模板参数功能将对此有所帮助。参见 Advantages of auto in template parameters in C++17
关于c++ - 推断可变模板参数包元素的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40412548/