random.tcc (uniform_int_distribution<>:: operator()(_UniformRandomNumberGenerator&, const param_type&)): Use make_unsigned instead of __add_unsigned and conditional instead of...

2010-02-08  Ed Smith-Rowland  <3dw4rd@verizon.net>

	* include/bits/random.tcc (uniform_int_distribution<>::
	operator()(_UniformRandomNumberGenerator&, const param_type&)):
	Use make_unsigned instead of __add_unsigned and conditional
	instead of __conditional_type.
	* include/std/random: Do not include <ext/type_traits.h> and
	<ext/numeric_traits.h>.

From-SVN: r156608
This commit is contained in:
Ed Smith-Rowland 2010-02-08 17:42:12 +00:00 committed by Paolo Carlini
parent 783b008c60
commit 83c290e2d4
3 changed files with 15 additions and 10 deletions

View file

@ -1,3 +1,12 @@
2010-02-08 Ed Smith-Rowland <3dw4rd@verizon.net>
* include/bits/random.tcc (uniform_int_distribution<>::
operator()(_UniformRandomNumberGenerator&, const param_type&)):
Use make_unsigned instead of __add_unsigned and conditional
instead of __conditional_type.
* include/std/random: Do not include <ext/type_traits.h> and
<ext/numeric_traits.h>.
2010-02-07 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/16896

View file

@ -822,13 +822,11 @@ namespace std
// __urng.min(), __param.b(), __param.a(). Currently works fine only
// in the most common case __urng.max() - __urng.min() >=
// __param.b() - __param.a(), with __urng.max() > __urng.min() >= 0.
typedef typename __gnu_cxx::__add_unsigned<typename
_UniformRandomNumberGenerator::result_type>::__type __urntype;
typedef typename __gnu_cxx::__add_unsigned<result_type>::__type
__utype;
typedef typename __gnu_cxx::__conditional_type<(sizeof(__urntype)
> sizeof(__utype)),
__urntype, __utype>::__type __uctype;
typedef typename std::make_unsigned<typename
_UniformRandomNumberGenerator::result_type>::type __urntype;
typedef typename std::make_unsigned<result_type>::type __utype;
typedef typename std::conditional<(sizeof(__urntype) > sizeof(__utype)),
__urntype, __utype>::type __uctype;
result_type __ret;

View file

@ -1,6 +1,6 @@
// <random> -*- C++ -*-
// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@ -41,8 +41,6 @@
#include <string>
#include <iosfwd>
#include <limits>
#include <ext/type_traits.h>
#include <ext/numeric_traits.h>
#include <debug/debug.h>
#include <type_traits>