У меня есть следующий код ведьма принимает значение и возвращает случайное значение в диапазоне от 0 до этого значения:C++ 14 Шаблон возврата enable_if типа
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);
Спасибо заранее.
Прочитайте документацию! http://en.cppreference.com/w/cpp/types/enable_if –
Если вы используете C++ 14, вы можете использовать 'std :: enable_if_t <...>' вместо 'typename std :: enable_if <...> :: type ' –