From 22ca1336dcfb663d86a6892dbe1e48eee20bb6db Mon Sep 17 00:00:00 2001 From: dim Date: Wed, 5 Mar 2014 19:30:36 +0000 Subject: MFC r261283: Import libc++ 3.4 release. This contains a lot of bugfixes, and some preliminary support for C++1y. MFC r261604: HEAD is not buildable for the past day. Commit a 'quick fix' in order to permit buildworld to complete. Reviewed by: theraven MFC r261608: Apply a cleaner solution for the sign warnings that can occur when compiling libc++'s header with -Wsystem-headers on. This has also been submitted upstream. Reported by: asomers MFC r261801: An ABI incompatibility crept into the libc++ 3.4 import in r261283. It was caused by upstream libc++ commit r194536, which aimed to make the headers more standards-compliant, by making std::pair's copy constructor trivial. Unfortunately, this could cause certain C++ applications using shared libraries built against the previous version of libc++ to crash. Fix the ABI incompatibility by making std::pair's copy constructor non-trivial again. Please note: Any C++ applications or shared libraries built with libc++ between r261283 and this revision should be recompiled. Reported by: stefanf --- contrib/libc++/include/random | 131 +++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 78 deletions(-) (limited to 'contrib/libc++/include/random') diff --git a/contrib/libc++/include/random b/contrib/libc++/include/random index 46cbc4b..c0db1ab 100644 --- a/contrib/libc++/include/random +++ b/contrib/libc++/include/random @@ -1813,7 +1813,7 @@ struct __lce_ta<__a, __c, __m, (unsigned short)(~0), __b> }; template -class _LIBCPP_TYPE_VIS linear_congruential_engine; +class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine; template @@ -1829,7 +1829,7 @@ operator>>(basic_istream<_CharT, _Traits>& __is, linear_congruential_engine<_Up, _Ap, _Cp, _Np>& __x); template -class _LIBCPP_TYPE_VIS linear_congruential_engine +class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine { public: // types @@ -1973,33 +1973,6 @@ linear_congruential_engine<_UIntType, __a, __c, __m>::__seed(_Sseq& __q, __x_ = __c == 0 && __s == 0 ? result_type(1) : __s; } -template -class __save_flags -{ - typedef basic_ios<_CharT, _Traits> __stream_type; - typedef typename __stream_type::fmtflags fmtflags; - - __stream_type& __stream_; - fmtflags __fmtflags_; - _CharT __fill_; - - __save_flags(const __save_flags&); - __save_flags& operator=(const __save_flags&); -public: - _LIBCPP_INLINE_VISIBILITY - explicit __save_flags(__stream_type& __stream) - : __stream_(__stream), - __fmtflags_(__stream.flags()), - __fill_(__stream.fill()) - {} - _LIBCPP_INLINE_VISIBILITY - ~__save_flags() - { - __stream_.flags(__fmtflags_); - __stream_.fill(__fill_); - } -}; - template inline _LIBCPP_INLINE_VISIBILITY @@ -2038,7 +2011,7 @@ typedef minstd_rand default_random_engine; template -class _LIBCPP_TYPE_VIS mersenne_twister_engine; +class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine; template >(basic_istream<_CharT, _Traits>& __is, template -class _LIBCPP_TYPE_VIS mersenne_twister_engine +class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine { public: // types @@ -2526,7 +2499,7 @@ typedef mersenne_twister_engine -class _LIBCPP_TYPE_VIS subtract_with_carry_engine; +class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine; template bool @@ -2554,7 +2527,7 @@ operator>>(basic_istream<_CharT, _Traits>& __is, subtract_with_carry_engine<_UI, _Wp, _Sp, _Rp>& __x); template -class _LIBCPP_TYPE_VIS subtract_with_carry_engine +class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine { public: // types @@ -2837,7 +2810,7 @@ typedef subtract_with_carry_engine ranlux48_base; // discard_block_engine template -class _LIBCPP_TYPE_VIS discard_block_engine +class _LIBCPP_TYPE_VIS_ONLY discard_block_engine { _Engine __e_; int __n_; @@ -3010,7 +2983,7 @@ typedef discard_block_engine ranlux48; // independent_bits_engine template -class _LIBCPP_TYPE_VIS independent_bits_engine +class _LIBCPP_TYPE_VIS_ONLY independent_bits_engine { template class __get_n @@ -3273,7 +3246,7 @@ public: }; template -class _LIBCPP_TYPE_VIS shuffle_order_engine +class _LIBCPP_TYPE_VIS_ONLY shuffle_order_engine { static_assert(0 < __k, "shuffle_order_engine invalid parameters"); public: @@ -3502,7 +3475,9 @@ typedef shuffle_order_engine knuth_b; class _LIBCPP_TYPE_VIS random_device { +#if !defined(_WIN32) int __f_; +#endif // defined(_WIN32) public: // types typedef unsigned result_type; @@ -3534,7 +3509,7 @@ private: // seed_seq -class _LIBCPP_TYPE_VIS seed_seq +class _LIBCPP_TYPE_VIS_ONLY seed_seq { public: // types @@ -3548,7 +3523,7 @@ private: public: // constructors _LIBCPP_INLINE_VISIBILITY - seed_seq() {} + seed_seq() _NOEXCEPT {} #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS template _LIBCPP_INLINE_VISIBILITY @@ -3566,7 +3541,7 @@ public: // property functions _LIBCPP_INLINE_VISIBILITY - size_t size() const {return __v_.size();} + size_t size() const _NOEXCEPT {return __v_.size();} template _LIBCPP_INLINE_VISIBILITY void param(_OutputIterator __dest) const @@ -3711,13 +3686,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // uniform_real_distribution template -class _LIBCPP_TYPE_VIS uniform_real_distribution +class _LIBCPP_TYPE_VIS_ONLY uniform_real_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __a_; result_type __b_; @@ -3832,13 +3807,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // bernoulli_distribution -class _LIBCPP_TYPE_VIS bernoulli_distribution +class _LIBCPP_TYPE_VIS_ONLY bernoulli_distribution { public: // types typedef bool result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { double __p_; public: @@ -3941,13 +3916,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, bernoulli_distribution& __x) // binomial_distribution template -class _LIBCPP_TYPE_VIS binomial_distribution +class _LIBCPP_TYPE_VIS_ONLY binomial_distribution { public: // types typedef _IntType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __t_; double __p_; @@ -4106,13 +4081,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // exponential_distribution template -class _LIBCPP_TYPE_VIS exponential_distribution +class _LIBCPP_TYPE_VIS_ONLY exponential_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __lambda_; public: @@ -4221,13 +4196,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // normal_distribution template -class _LIBCPP_TYPE_VIS normal_distribution +class _LIBCPP_TYPE_VIS_ONLY normal_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __mean_; result_type __stddev_; @@ -4389,13 +4364,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // lognormal_distribution template -class _LIBCPP_TYPE_VIS lognormal_distribution +class _LIBCPP_TYPE_VIS_ONLY lognormal_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { normal_distribution __nd_; public: @@ -4514,13 +4489,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // poisson_distribution template -class _LIBCPP_TYPE_VIS poisson_distribution +class _LIBCPP_TYPE_VIS_ONLY poisson_distribution { public: // types typedef _IntType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { double __mean_; double __s_; @@ -4745,13 +4720,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // weibull_distribution template -class _LIBCPP_TYPE_VIS weibull_distribution +class _LIBCPP_TYPE_VIS_ONLY weibull_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __a_; result_type __b_; @@ -4859,13 +4834,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, } template -class _LIBCPP_TYPE_VIS extreme_value_distribution +class _LIBCPP_TYPE_VIS_ONLY extreme_value_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __a_; result_type __b_; @@ -4980,13 +4955,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // gamma_distribution template -class _LIBCPP_TYPE_VIS gamma_distribution +class _LIBCPP_TYPE_VIS_ONLY gamma_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __alpha_; result_type __beta_; @@ -5152,13 +5127,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // negative_binomial_distribution template -class _LIBCPP_TYPE_VIS negative_binomial_distribution +class _LIBCPP_TYPE_VIS_ONLY negative_binomial_distribution { public: // types typedef _IntType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __k_; double __p_; @@ -5287,13 +5262,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // geometric_distribution template -class _LIBCPP_TYPE_VIS geometric_distribution +class _LIBCPP_TYPE_VIS_ONLY geometric_distribution { public: // types typedef _IntType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { double __p_; public: @@ -5389,13 +5364,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // chi_squared_distribution template -class _LIBCPP_TYPE_VIS chi_squared_distribution +class _LIBCPP_TYPE_VIS_ONLY chi_squared_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __n_; public: @@ -5495,13 +5470,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // cauchy_distribution template -class _LIBCPP_TYPE_VIS cauchy_distribution +class _LIBCPP_TYPE_VIS_ONLY cauchy_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __a_; result_type __b_; @@ -5618,13 +5593,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // fisher_f_distribution template -class _LIBCPP_TYPE_VIS fisher_f_distribution +class _LIBCPP_TYPE_VIS_ONLY fisher_f_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __m_; result_type __n_; @@ -5740,13 +5715,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // student_t_distribution template -class _LIBCPP_TYPE_VIS student_t_distribution +class _LIBCPP_TYPE_VIS_ONLY student_t_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { result_type __n_; public: @@ -5853,13 +5828,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // discrete_distribution template -class _LIBCPP_TYPE_VIS discrete_distribution +class _LIBCPP_TYPE_VIS_ONLY discrete_distribution { public: // types typedef _IntType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { vector __p_; public: @@ -5928,8 +5903,8 @@ public: discrete_distribution(size_t __nw, double __xmin, double __xmax, _UnaryOperation __fw) : __p_(__nw, __xmin, __xmax, __fw) {} - explicit discrete_distribution(const param_type& __p) _LIBCPP_INLINE_VISIBILITY + explicit discrete_distribution(const param_type& __p) : __p_(__p) {} _LIBCPP_INLINE_VISIBILITY void reset() {} @@ -6084,13 +6059,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // piecewise_constant_distribution template -class _LIBCPP_TYPE_VIS piecewise_constant_distribution +class _LIBCPP_TYPE_VIS_ONLY piecewise_constant_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { vector __b_; vector __densities_; @@ -6408,13 +6383,13 @@ operator>>(basic_istream<_CharT, _Traits>& __is, // piecewise_linear_distribution template -class _LIBCPP_TYPE_VIS piecewise_linear_distribution +class _LIBCPP_TYPE_VIS_ONLY piecewise_linear_distribution { public: // types typedef _RealType result_type; - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type { vector __b_; vector __densities_; -- cgit v1.1