http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58302
Bug ID: 58302 Summary: compilation error : std::negative_binomial_distribution::operator(e, p) Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: faithandbrave at gmail dot com Follow code become compilation error: #include <random> int main() { typedef std::negative_binomial_distribution<> dist_type; std::default_random_engine engine; dist_type dist; dist_type::param_type param(3, 0.5); int result = dist(engine, param); // compile error! } error description: prog.cc: In function 'int main()': prog.cc:12:7: warning: unused variable 'result' [-Wunused-variable] int result = dist(engine, param); // compile error! ^ In file included from /usr/local/gcc-head/include/c++/4.9.0/random:49:0, from prog.cc:1: /usr/local/gcc-head/include/c++/4.9.0/bits/random.h: In instantiation of 'class std::gamma_distribution<int>': /usr/local/gcc-head/include/c++/4.9.0/bits/random.tcc:1295:4: required from 'std::negative_binomial_distribution<_IntType>::result_type std::negative_binomial_distribution<_IntType>::operator()(_UniformRandomNumberGenerator&, const std::negative_binomial_distribution<_IntType>::param_type&) [with _UniformRandomNumberGenerator = std::linear_congruential_engine<long unsigned int, 16807ul, 0ul, 2147483647ul>; _IntType = int; std::negative_binomial_distribution<_IntType>::result_type = int]' prog.cc:12:34: required from here /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2504:7: error: static assertion failed: template argument not a floating point type static_assert(std::is_floating_point<_RealType>::value, ^ /usr/local/gcc-head/include/c++/4.9.0/bits/random.h: In instantiation of 'class std::normal_distribution<int>': /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2699:45: required from 'class std::gamma_distribution<int>' /usr/local/gcc-head/include/c++/4.9.0/bits/random.tcc:1295:4: required from 'std::negative_binomial_distribution<_IntType>::result_type std::negative_binomial_distribution<_IntType>::operator()(_UniformRandomNumberGenerator&, const std::negative_binomial_distribution<_IntType>::param_type&) [with _UniformRandomNumberGenerator = std::linear_congruential_engine<long unsigned int, 16807ul, 0ul, 2147483647ul>; _IntType = int; std::negative_binomial_distribution<_IntType>::result_type = int]' prog.cc:12:34: required from here /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2087:7: error: static assertion failed: template argument not a floating point type static_assert(std::is_floating_point<_RealType>::value, ^ In file included from /usr/local/gcc-head/include/c++/4.9.0/random:51:0, from prog.cc:1: /usr/local/gcc-head/include/c++/4.9.0/bits/random.tcc: In instantiation of 'std::negative_binomial_distribution<_IntType>::result_type std::negative_binomial_distribution<_IntType>::operator()(_UniformRandomNumberGenerator&, const std::negative_binomial_distribution<_IntType>::param_type&) [with _UniformRandomNumberGenerator = std::linear_congruential_engine<long unsigned int, 16807ul, 0ul, 2147483647ul>; _IntType = int; std::negative_binomial_distribution<_IntType>::result_type = int]': prog.cc:12:34: required from here /usr/local/gcc-head/include/c++/4.9.0/bits/random.tcc:1298:64: error: no match for call to '(std::gamma_distribution<double>) (std::linear_congruential_engine<long unsigned int, 16807ul, 0ul, 2147483647ul>&, param_type)' _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); ^ In file included from /usr/local/gcc-head/include/c++/4.9.0/random:49:0, from prog.cc:1: /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2502:11: note: candidates are: class gamma_distribution ^ /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2619:2: note: template<class _UniformRandomNumberGenerator> std::gamma_distribution<_RealType>::result_type std::gamma_distribution<_RealType>::operator()(_UniformRandomNumberGenerator&) [with _UniformRandomNumberGenerator = _UniformRandomNumberGenerator; _RealType = double] operator()(_UniformRandomNumberGenerator& __urng) ^ /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2619:2: note: template argument deduction/substitution failed: In file included from /usr/local/gcc-head/include/c++/4.9.0/random:51:0, from prog.cc:1: /usr/local/gcc-head/include/c++/4.9.0/bits/random.tcc:1298:64: note: candidate expects 1 argument, 2 provided _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); ^ In file included from /usr/local/gcc-head/include/c++/4.9.0/random:49:0, from prog.cc:1: /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2624:2: note: template<class _UniformRandomNumberGenerator> std::gamma_distribution<_RealType>::result_type std::gamma_distribution<_RealType>::operator()(_UniformRandomNumberGenerator&, const std::gamma_distribution<_RealType>::param_type&) [with _UniformRandomNumberGenerator = _UniformRandomNumberGenerator; _RealType = double] operator()(_UniformRandomNumberGenerator& __urng, ^ /usr/local/gcc-head/include/c++/4.9.0/bits/random.h:2624:2: note: template argument deduction/substitution failed: In file included from /usr/local/gcc-head/include/c++/4.9.0/random:51:0, from prog.cc:1: /usr/local/gcc-head/include/c++/4.9.0/bits/random.tcc:1298:64: note: cannot convert 'std::gamma_distribution<int>::param_type((& __p)->std::negative_binomial_distribution<_IntType>::param_type::k<int>(), (int)(#'rdiv_expr' not supported by expression#))' (type 'param_type {aka std::gamma_distribution<int>::param_type}') to type 'const std::gamma_distribution<double>::param_type&' _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p()));