我有以下代码,它接受一个值并返回0和该值之间的随机值:
template<typename T>
typename std::enable_if<!std::is_integral<T>::value>::type
RandomGenerator::random(T value) {
std::uniform_real_distribution<T> dist(0, value);
return dist(RandomGenerator::mt);
}
我的问题是返回类型是无效的,我希望它是T。
enable_if是为了避免使用与此类似的另一个函数,但对于整数类型使用std :: uniform_int_distribution也存在同样的问题。
如何编写可以运行以下示例代码的函数:
auto BaseAngle = 10.0f;
//add a bit of randomness to the angle
BaseAngle += RandomGenerator::random(45.0f);
提前致谢。
答案 0 :(得分:2)
您可以使用
std::enable_if<!std::is_integral<T>::value, T>
将定义的类型设为T
而不是void
。