Commit a66f7cb9 authored by Eric Christiansen's avatar Eric Christiansen

allows building with -std=c++11 under G++

parent 0b8a6da8
......@@ -67,7 +67,13 @@ namespace cv { namespace softcascade { namespace internal
struct Random
{
typedef std::mt19937 engine;
// True if we're using C++11.
#if __cplusplus >= 201103L
// C++11 removes uniform_int.
typedef std::uniform_int_distribution<int> uniform;
#else
typedef std::uniform_int<int> uniform;
#endif
};
}}}
......
......@@ -233,8 +233,22 @@ void ChannelFeaturePool::fill(int desired)
int x = xRand(eng);
int y = yRand(eng);
#if __cplusplus >= 201103L
// The interface changed slightly going from uniform_int to
// uniform_int_distribution. See this page to understand
// the old behavior:
// http://www.boost.org/doc/libs/1_47_0/boost/random/uniform_int.hpp
int w = 1 + wRand(
eng,
// This extra "- 1" appears to be necessary, based on the Boost docs.
Random::uniform::param_type(0, (model.width - x - 1) - 1));
int h = 1 + hRand(
eng,
Random::uniform::param_type(0, (model.height - y - 1) - 1));
#else
int w = 1 + wRand(eng, model.width - x - 1);
int h = 1 + hRand(eng, model.height - y - 1);
#endif
CV_Assert(w > 0);
CV_Assert(h > 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment