-2
I次のコード魔女が値をとり、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);
}
ここに私の問題は、戻り値の型がvoidと私であるということです
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を使っているなら、 'typename std :: enable_if <...> :: typeの代わりに' std :: enable_if_t <...> 'を使うことができます' –