diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2008-11-11 14:31:48 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2008-11-11 14:31:48 +0000 |
commit | 285743c92b583002623fe59d2886c6396b626129 (patch) | |
tree | b7c694e9ccacabf5608f31068bac74421dac5444 | |
parent | 9b77c3a2ba972d17193b405e15c864d9451b4fdd (diff) | |
download | gcc-285743c92b583002623fe59d2886c6396b626129.zip gcc-285743c92b583002623fe59d2886c6396b626129.tar.gz gcc-285743c92b583002623fe59d2886c6396b626129.tar.bz2 |
re PR libstdc++/37986 (std::tr1::variate_generator does not conform to TR1.)
2008-11-11 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/37986
* include/tr1_impl/random (struct _Adaptor): Use remove_pointer
and remove_reference on _Engine.
* testsuite/tr1/5_numerical_facilities/random/variate_generator/
37986.cc: New.
From-SVN: r141769
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1_impl/random | 5 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc | 45 |
3 files changed, 57 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9635756..191d27c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,13 @@ 2008-11-11 Paolo Carlini <paolo.carlini@oracle.com> + PR libstdc++/37986 + * include/tr1_impl/random (struct _Adaptor): Use remove_pointer + and remove_reference on _Engine. + * testsuite/tr1/5_numerical_facilities/random/variate_generator/ + 37986.cc: New. + +2008-11-11 Paolo Carlini <paolo.carlini@oracle.com> + * testsuite/ext/ext_pointer/1_neg.cc: Adjust dg-error line numbers. 2008-11-11 Paolo Carlini <paolo.carlini@oracle.com> diff --git a/libstdc++-v3/include/tr1_impl/random b/libstdc++-v3/include/tr1_impl/random index b45368d..9e30eb3 100644 --- a/libstdc++-v3/include/tr1_impl/random +++ b/libstdc++-v3/include/tr1_impl/random @@ -79,7 +79,10 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 template<typename _Engine, typename _Distribution> struct _Adaptor { - typedef typename _Engine::result_type _Engine_result_type; + typedef typename remove_reference< + typename remove_pointer<_Engine>::type>::type _BEngine; + + typedef typename _BEngine::result_type _Engine_result_type; typedef typename _Distribution::input_type result_type; public: diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc new file mode 100644 index 0000000..50ca3b9 --- /dev/null +++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc @@ -0,0 +1,45 @@ +// { dg-do compile } +// +// Copyright (C) 2008 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 +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 5.1.3 class template variate_generator + +#include <tr1/random> + +// libtsdc++/37986 +void test01() +{ + std::tr1::mt19937 mt; + std::tr1::uniform_real<double> dist; + + std::tr1::variate_generator< + std::tr1::mt19937, + std::tr1::uniform_real<double> + > g1(mt, dist); + + std::tr1::variate_generator< + std::tr1::mt19937&, + std::tr1::uniform_real<double> + > g2(mt, dist); + + std::tr1::variate_generator< + std::tr1::mt19937*, + std::tr1::uniform_real<double> + > g3(&mt, dist); +} |