Gho*_*der 0 c++ templates variadic-templates c++11
我有以下功能:
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)];
}
Run Code Online (Sandbox Code Playgroud)
这就是这样称呼的:
MyEnum val = random_value<MyEnum, MyEnum::val1, MyEnum::val2, MyEnum::val3>(rnd);
Run Code Online (Sandbox Code Playgroud)
是否有可能以这种方式重新定义它,我不需要明确指定T?因此它被称为:
MyEnum val = random_value<MyEnum::val1, MyEnum::val2, MyEnum::val3>(rnd);
Run Code Online (Sandbox Code Playgroud)