aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/tr1
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2007-03-02 16:21:30 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2007-03-02 16:21:30 +0000
commit1769232d2607e9219b1932090c1036a6ed334152 (patch)
treee52eaced466cf7de7cf45af492ba4bcb23c5d65c /libstdc++-v3/include/tr1
parent7393f7f8d04844ab976238ceffcc8f8c00214c92 (diff)
downloadgcc-1769232d2607e9219b1932090c1036a6ed334152.zip
gcc-1769232d2607e9219b1932090c1036a6ed334152.tar.gz
gcc-1769232d2607e9219b1932090c1036a6ed334152.tar.bz2
re PR libstdc++/28080 (header dependencies)
2007-03-02 Paolo Carlini <pcarlini@suse.de> * testsuite/thread/pthread1.cc: Include <pthread.h>. * testsuite/thread/pthread2.cc: Likewise. * testsuite/thread/pthread3.cc: Likewise. * testsuite/thread/pthread4.cc: Likewise. * testsuite/thread/pthread5.cc: Likewise. * testsuite/thread/pthread6.cc: Likewise. * testsuite/thread/pthread7-rope.cc: Likewise. 2007-03-02 Paolo Carlini <pcarlini@suse.de> PR libstdc++/28080 (partial) * include/tr1/random (class random_device): Rework to use simple <cstdio> input, do not include <fstream>. * include/tr1/random.tcc (all inserters and extractors): Refer to ios_base as base class of basic_istream or basic_ostream. From-SVN: r122478
Diffstat (limited to 'libstdc++-v3/include/tr1')
-rw-r--r--libstdc++-v3/include/tr1/random19
-rw-r--r--libstdc++-v3/include/tr1/random.tcc191
2 files changed, 141 insertions, 69 deletions
diff --git a/libstdc++-v3/include/tr1/random b/libstdc++-v3/include/tr1/random
index 02a7ae7..e8483c7 100644
--- a/libstdc++-v3/include/tr1/random
+++ b/libstdc++-v3/include/tr1/random
@@ -35,17 +35,16 @@
#ifndef _TR1_RANDOM
#define _TR1_RANDOM 1
-#include <bits/stl_algobase.h>
-#include <bits/concept_check.h>
#include <cmath>
-#include <debug/debug.h>
-#include <iterator>
+#include <cstdio>
+#include <string>
#include <iosfwd>
#include <limits>
#include <tr1/type_traits>
#include <tr1/cmath>
-#include <fstream>
#include <ext/type_traits.h>
+#include <bits/concept_check.h>
+#include <debug/debug.h>
namespace std
{
@@ -1421,14 +1420,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
random_device(const std::string& __token = "/dev/urandom")
{
if ((__token != "/dev/urandom" && __token != "/dev/random")
- || !_M_filebuf.open(__token.c_str(),
- std::ios_base::in | std::ios_base::binary))
+ || !(_M_file = std::fopen(__token.c_str(), "rb")))
std::__throw_runtime_error(__N("random_device::"
"random_device(const std::string&)"));
}
~random_device()
- { _M_filebuf.close(); }
+ { std::fclose(_M_file); }
#else
@@ -1474,7 +1472,8 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
{
#ifdef _GLIBCXX_USE_RANDOM_TR1
result_type __ret;
- _M_filebuf.sgetn(reinterpret_cast<char*>(&__ret), sizeof(result_type));
+ std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type),
+ 1, _M_file);
return __ret;
#else
return _M_mt();
@@ -1486,7 +1485,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
void operator=(const random_device&);
#ifdef _GLIBCXX_USE_RANDOM_TR1
- std::filebuf _M_filebuf;
+ FILE* _M_file;
#else
mt19937 _M_mt;
#endif
diff --git a/libstdc++-v3/include/tr1/random.tcc b/libstdc++-v3/include/tr1/random.tcc
index c66a4d8..3962816 100644
--- a/libstdc++-v3/include/tr1/random.tcc
+++ b/libstdc++-v3/include/tr1/random.tcc
@@ -1,6 +1,6 @@
// random number generation (out of line) -*- C++ -*-
-// Copyright (C) 2006 Free Software Foundation, Inc.
+// Copyright (C) 2006, 2007 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
@@ -143,10 +143,12 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const linear_congruential<_UIntType, __a, __c, __m>& __lcr)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
- __os.flags(std::ios_base::dec | std::ios_base::fixed
- | std::ios_base::left);
+ __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
__os.fill(__os.widen(' '));
__os << __lcr._M_x;
@@ -162,8 +164,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
linear_congruential<_UIntType, __a, __c, __m>& __lcr)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec);
__is >> __lcr._M_x;
@@ -268,11 +273,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
const mersenne_twister<_UIntType, __w, __n, __m,
__r, __a, __u, __s, __b, __t, __c, __l>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::dec | std::ios_base::fixed
- | std::ios_base::left);
+ __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
__os.fill(__space);
for (int __i = 0; __i < __n - 1; ++__i)
@@ -293,8 +300,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
mersenne_twister<_UIntType, __w, __n, __m,
__r, __a, __u, __s, __b, __t, __c, __l>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec | std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
for (int __i = 0; __i < __n; ++__i)
__is >> __x._M_x[__i];
@@ -385,11 +395,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const subtract_with_carry<_IntType, __m, __s, __r>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::dec | std::ios_base::fixed
- | std::ios_base::left);
+ __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
__os.fill(__space);
for (int __i = 0; __i < __r; ++__i)
@@ -407,8 +419,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
subtract_with_carry<_IntType, __m, __s, __r>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec | std::ios_base::skipws);
+ typedef std::basic_ostream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
for (int __i = 0; __i < __r; ++__i)
__is >> __x._M_x[__i];
@@ -524,11 +539,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const subtract_with_carry_01<_RealType, __w, __s, __r>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::dec | std::ios_base::fixed
- | std::ios_base::left);
+ __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
__os.fill(__space);
for (int __i = 0; __i < __r; ++__i)
@@ -547,8 +564,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
subtract_with_carry_01<_RealType, __w, __s, __r>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec | std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
for (int __i = 0; __i < __r; ++__i)
for (int __j = 0; __j < __x.__n; ++__j)
@@ -586,11 +606,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
const discard_block<_UniformRandomNumberGenerator,
__p, __r>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::dec | std::ios_base::fixed
- | std::ios_base::left);
+ __os.flags(__ios_base::dec | __ios_base::fixed
+ | __ios_base::left);
__os.fill(__space);
__os << __x._M_b << __space << __x._M_n;
@@ -606,8 +629,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
discard_block<_UniformRandomNumberGenerator, __p, __r>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec | std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_b >> __x._M_n;
@@ -686,11 +712,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
const xor_combine<_UniformRandomNumberGenerator1, __s1,
_UniformRandomNumberGenerator2, __s2>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::dec | std::ios_base::fixed
- | std::ios_base::left);
+ __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
__os.fill(__space);
__os << __x.base1() << __space << __x.base2();
@@ -708,8 +736,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
xor_combine<_UniformRandomNumberGenerator1, __s1,
_UniformRandomNumberGenerator2, __s2>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::skipws);
__is >> __x._M_b1 >> __x._M_b2;
@@ -723,10 +754,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const uniform_int<_IntType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space);
__os << __x.min() << __space << __x.max();
@@ -741,8 +775,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
uniform_int<_IntType>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec | std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_min >> __x._M_max;
@@ -756,10 +793,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const bernoulli_distribution& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<double>::__max_digits10);
@@ -800,10 +840,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const geometric_distribution<_IntType, _RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@@ -960,11 +1003,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const poisson_distribution<_IntType, _RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@@ -982,8 +1028,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
poisson_distribution<_IntType, _RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::skipws);
__is >> __x._M_mean >> __x._M_nd;
__x._M_initialize();
@@ -1192,11 +1241,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const binomial_distribution<_IntType, _RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@@ -1215,8 +1267,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
binomial_distribution<_IntType, _RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec | std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_t >> __x._M_p >> __x._M_nd;
__x._M_initialize();
@@ -1231,11 +1286,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const uniform_real<_RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@@ -1252,8 +1310,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
uniform_real<_RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::skipws);
__is >> __x._M_min >> __x._M_max;
@@ -1267,10 +1328,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const exponential_distribution<_RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@@ -1328,11 +1392,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const normal_distribution<_RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' ');
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@@ -1353,8 +1420,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is,
normal_distribution<_RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __is.flags();
- __is.flags(std::ios_base::dec | std::ios_base::skipws);
+ typedef std::basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __is.flags();
+ __is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_saved_available >> __x._M_mean
>> __x._M_sigma;
@@ -1455,10 +1525,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const gamma_distribution<_RealType>& __x)
{
- const std::ios_base::fmtflags __flags = __os.flags();
+ typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision();
- __os.flags(std::ios_base::scientific | std::ios_base::left);
+ __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);