推断可变参数模板参数包元素的类型

时间:2016-11-03 22:51:48

标签: c++ c++11 templates variadic-templates

我有以下功能:

expected type 'char' found type Option<<char>>

这就是这样称呼的:

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)];
}

是否有可能以这样的方式重新定义它,以便我不需要明确指定T?因此它被称为:

MyEnum val = random_value<MyEnum, MyEnum::val1, MyEnum::val2, MyEnum::val3>(rnd);

1 个答案:

答案 0 :(得分:5)

目前还没有,但在C ++ 17中添加新的auto模板参数功能将有助于此。见Advantages of auto in template parameters in C++17