__is.flags(__ios_base::dec | __ios_base::skipws);
_IntType __a, __b;
- __is >> __a >> __b;
- __x.param(typename uniform_int_distribution<_IntType>::
- param_type(__a, __b));
+ if (__is >> __a >> __b)
+ __x.param(typename uniform_int_distribution<_IntType>::
+ param_type(__a, __b));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::skipws);
_RealType __a, __b;
- __is >> __a >> __b;
- __x.param(typename uniform_real_distribution<_RealType>::
- param_type(__a, __b));
+ if (__is >> __a >> __b)
+ __x.param(typename uniform_real_distribution<_RealType>::
+ param_type(__a, __b));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::skipws);
double __p;
- __is >> __p;
- __x.param(typename geometric_distribution<_IntType>::param_type(__p));
+ if (__is >> __p)
+ __x.param(typename geometric_distribution<_IntType>::param_type(__p));
__is.flags(__flags);
return __is;
_IntType __k;
double __p;
- __is >> __k >> __p >> __x._M_gd;
- __x.param(typename negative_binomial_distribution<_IntType>::
- param_type(__k, __p));
+ if (__is >> __k >> __p >> __x._M_gd)
+ __x.param(typename negative_binomial_distribution<_IntType>::
+ param_type(__k, __p));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::skipws);
double __mean;
- __is >> __mean >> __x._M_nd;
- __x.param(typename poisson_distribution<_IntType>::param_type(__mean));
+ if (__is >> __mean >> __x._M_nd)
+ __x.param(typename poisson_distribution<_IntType>::param_type(__mean));
__is.flags(__flags);
return __is;
_IntType __t;
double __p;
- __is >> __t >> __p >> __x._M_nd;
- __x.param(typename binomial_distribution<_IntType>::
- param_type(__t, __p));
+ if (__is >> __t >> __p >> __x._M_nd)
+ __x.param(typename binomial_distribution<_IntType>::
+ param_type(__t, __p));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __lambda;
- __is >> __lambda;
- __x.param(typename exponential_distribution<_RealType>::
- param_type(__lambda));
+ if (__is >> __lambda)
+ __x.param(typename exponential_distribution<_RealType>::
+ param_type(__lambda));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
double __mean, __stddev;
- __is >> __mean >> __stddev
- >> __x._M_saved_available;
- if (__x._M_saved_available)
- __is >> __x._M_saved;
- __x.param(typename normal_distribution<_RealType>::
- param_type(__mean, __stddev));
+ bool __saved_avail;
+ if (__is >> __mean >> __stddev >> __saved_avail)
+ {
+ if (__saved_avail && (__is >> __x._M_saved))
+ {
+ __x._M_saved_available = __saved_avail;
+ __x.param(typename normal_distribution<_RealType>::
+ param_type(__mean, __stddev));
+ }
+ }
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __m, __s;
- __is >> __m >> __s >> __x._M_nd;
- __x.param(typename lognormal_distribution<_RealType>::
- param_type(__m, __s));
+ if (__is >> __m >> __s >> __x._M_nd)
+ __x.param(typename lognormal_distribution<_RealType>::
+ param_type(__m, __s));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __n;
- __is >> __n >> __x._M_gd;
- __x.param(typename chi_squared_distribution<_RealType>::
- param_type(__n));
+ if (__is >> __n >> __x._M_gd)
+ __x.param(typename chi_squared_distribution<_RealType>::
+ param_type(__n));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __a, __b;
- __is >> __a >> __b;
- __x.param(typename cauchy_distribution<_RealType>::
- param_type(__a, __b));
+ if (__is >> __a >> __b)
+ __x.param(typename cauchy_distribution<_RealType>::
+ param_type(__a, __b));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __m, __n;
- __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y;
- __x.param(typename fisher_f_distribution<_RealType>::
- param_type(__m, __n));
+ if (__is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y)
+ __x.param(typename fisher_f_distribution<_RealType>::
+ param_type(__m, __n));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __n;
- __is >> __n >> __x._M_nd >> __x._M_gd;
- __x.param(typename student_t_distribution<_RealType>::param_type(__n));
+ if (__is >> __n >> __x._M_nd >> __x._M_gd)
+ __x.param(typename student_t_distribution<_RealType>::param_type(__n));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __alpha_val, __beta_val;
- __is >> __alpha_val >> __beta_val >> __x._M_nd;
- __x.param(typename gamma_distribution<_RealType>::
- param_type(__alpha_val, __beta_val));
+ if (__is >> __alpha_val >> __beta_val >> __x._M_nd)
+ __x.param(typename gamma_distribution<_RealType>::
+ param_type(__alpha_val, __beta_val));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __a, __b;
- __is >> __a >> __b;
- __x.param(typename weibull_distribution<_RealType>::
- param_type(__a, __b));
+ if (__is >> __a >> __b)
+ __x.param(typename weibull_distribution<_RealType>::
+ param_type(__a, __b));
__is.flags(__flags);
return __is;
__is.flags(__ios_base::dec | __ios_base::skipws);
_RealType __a, __b;
- __is >> __a >> __b;
- __x.param(typename extreme_value_distribution<_RealType>::
- param_type(__a, __b));
+ if (__is >> __a >> __b)
+ __x.param(typename extreme_value_distribution<_RealType>::
+ param_type(__a, __b));
__is.flags(__flags);
return __is;
return __os;
}
+namespace __detail
+{
+ template<typename _ValT, typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ __extract_params(basic_istream<_CharT, _Traits>& __is,
+ vector<_ValT>& __vals, size_t __n)
+ {
+ __vals.reserve(__n);
+ while (__n--)
+ {
+ _ValT __val;
+ if (__is >> __val)
+ __vals.push_back(__val);
+ else
+ break;
+ }
+ return __is;
+ }
+} // namespace __detail
+
template<typename _IntType, typename _CharT, typename _Traits>
std::basic_istream<_CharT, _Traits>&
operator>>(std::basic_istream<_CharT, _Traits>& __is,
__is.flags(__ios_base::dec | __ios_base::skipws);
size_t __n;
- __is >> __n;
-
- std::vector<double> __prob_vec;
- __prob_vec.reserve(__n);
- for (; __n != 0; --__n)
+ if (__is >> __n)
{
- double __prob;
- __is >> __prob;
- __prob_vec.push_back(__prob);
+ std::vector<double> __prob_vec;
+ if (__detail::__extract_params(__is, __prob_vec, __n))
+ __x.param({__prob_vec.begin(), __prob_vec.end()});
}
- __x.param(typename discrete_distribution<_IntType>::
- param_type(__prob_vec.begin(), __prob_vec.end()));
-
__is.flags(__flags);
return __is;
}
__is.flags(__ios_base::dec | __ios_base::skipws);
size_t __n;
- __is >> __n;
-
- std::vector<_RealType> __int_vec;
- __int_vec.reserve(__n + 1);
- for (size_t __i = 0; __i <= __n; ++__i)
- {
- _RealType __int;
- __is >> __int;
- __int_vec.push_back(__int);
- }
-
- std::vector<double> __den_vec;
- __den_vec.reserve(__n);
- for (size_t __i = 0; __i < __n; ++__i)
+ if (__is >> __n)
{
- double __den;
- __is >> __den;
- __den_vec.push_back(__den);
+ std::vector<_RealType> __int_vec;
+ if (__detail::__extract_params(__is, __int_vec, __n + 1))
+ {
+ std::vector<double> __den_vec;
+ if (__detail::__extract_params(__is, __den_vec, __n))
+ {
+ __x.param({ __int_vec.begin(), __int_vec.end(),
+ __den_vec.begin() });
+ }
+ }
}
- __x.param(typename piecewise_constant_distribution<_RealType>::
- param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin()));
-
__is.flags(__flags);
return __is;
}
__is.flags(__ios_base::dec | __ios_base::skipws);
size_t __n;
- __is >> __n;
-
- std::vector<_RealType> __int_vec;
- __int_vec.reserve(__n + 1);
- for (size_t __i = 0; __i <= __n; ++__i)
+ if (__is >> __n)
{
- _RealType __int;
- __is >> __int;
- __int_vec.push_back(__int);
- }
-
- std::vector<double> __den_vec;
- __den_vec.reserve(__n + 1);
- for (size_t __i = 0; __i <= __n; ++__i)
- {
- double __den;
- __is >> __den;
- __den_vec.push_back(__den);
+ vector<_RealType> __int_vec;
+ if (__detail::__extract_params(__is, __int_vec, __n + 1))
+ {
+ vector<double> __den_vec;
+ if (__detail::__extract_params(__is, __den_vec, __n + 1))
+ {
+ __x.param({ __int_vec.begin(), __int_vec.end(),
+ __den_vec.begin() });
+ }
+ }
}
-
- __x.param(typename piecewise_linear_distribution<_RealType>::
- param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin()));
-
__is.flags(__flags);
return __is;
}