Commit 2d53d9eb by Phil Edwards

re PR libstdc++/3829 (missing template instantiations)

2001-12-27  Phil Edwards  <pme@gcc.gnu.org>

	PR libstdc++/3829
	* src/misc-inst.cc:  Many additional I/O-related instantiations.
	* testsuite/27_io/instantiations.cc:  New file.

From-SVN: r48324
parent 7f729bc6
2001-12-27 Phil Edwards <pme@gcc.gnu.org>
PR libstdc++/3829
* src/misc-inst.cc: Many additional I/O-related instantiations.
* testsuite/27_io/instantiations.cc: New file.
2001-12-26 Benjamin Kosnik <bkoz@waller.constant.com> 2001-12-26 Benjamin Kosnik <bkoz@waller.constant.com>
* testsuite/24_iterators/insert_iterator.cc (test02): Add. * testsuite/24_iterators/insert_iterator.cc (test02): Add.
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include <bits/std_istream.h> #include <bits/std_istream.h>
#include <bits/std_ostream.h> #include <bits/std_ostream.h>
#include <bits/std_string.h> #include <bits/std_string.h>
#include <bits/std_iomanip.h>
// NB: unnecessary if the .h headers include these // NB: unnecessary if the .h headers include these
#ifndef _GLIBCPP_FULLY_COMPLIANT_HEADERS #ifndef _GLIBCPP_FULLY_COMPLIANT_HEADERS
...@@ -94,6 +95,17 @@ namespace std ...@@ -94,6 +95,17 @@ namespace std
// //
// iomanip
//
template class _Setfill<char>;
template _Setfill<char> setfill(char);
#ifdef _GLIBCPP_USE_WCHAR_T
template class _Setfill<wchar_t>;
template _Setfill<wchar_t> setfill(wchar_t);
#endif
//
// istream // istream
// //
template class basic_istream<char>; template class basic_istream<char>;
...@@ -104,11 +116,20 @@ namespace std ...@@ -104,11 +116,20 @@ namespace std
template istream& operator>>(istream&, char*); template istream& operator>>(istream&, char*);
template istream& operator>>(istream&, unsigned char*); template istream& operator>>(istream&, unsigned char*);
template istream& operator>>(istream&, signed char*); template istream& operator>>(istream&, signed char*);
template istream& operator>>(istream&, _Setiosflags);
template istream& operator>>(istream&, _Resetiosflags);
template istream& operator>>(istream&, _Setbase);
template istream& operator>>(istream&, _Setfill<char>);
template istream& operator>>(istream&, _Setprecision);
template istream& operator>>(istream&, _Setw);
#ifdef _GLIBCPP_USE_WCHAR_T #ifdef _GLIBCPP_USE_WCHAR_T
template class basic_istream<wchar_t>; template class basic_istream<wchar_t>;
template wistream& ws(wistream&); template wistream& ws(wistream&);
template wistream& operator>>(wistream&, wchar_t&); template wistream& operator>>(wistream&, wchar_t&);
template wistream& operator>>(wistream&, wchar_t*); template wistream& operator>>(wistream&, wchar_t*);
template wistream& operator>>(wistream&, _Setfill<wchar_t>);
#endif #endif
...@@ -125,6 +146,14 @@ namespace std ...@@ -125,6 +146,14 @@ namespace std
template ostream& operator<<(ostream&, const char*); template ostream& operator<<(ostream&, const char*);
template ostream& operator<<(ostream&, const unsigned char*); template ostream& operator<<(ostream&, const unsigned char*);
template ostream& operator<<(ostream&, const signed char*); template ostream& operator<<(ostream&, const signed char*);
template ostream& operator<<(ostream&, _Setiosflags);
template ostream& operator<<(ostream&, _Resetiosflags);
template ostream& operator<<(ostream&, _Setbase);
template ostream& operator<<(ostream&, _Setfill<char>);
template ostream& operator<<(ostream&, _Setprecision);
template ostream& operator<<(ostream&, _Setw);
#ifdef _GLIBCPP_USE_WCHAR_T #ifdef _GLIBCPP_USE_WCHAR_T
template class basic_ostream<wchar_t>; template class basic_ostream<wchar_t>;
template wostream& endl(wostream&); template wostream& endl(wostream&);
...@@ -134,6 +163,7 @@ namespace std ...@@ -134,6 +163,7 @@ namespace std
template wostream& operator<<(wostream&, char); template wostream& operator<<(wostream&, char);
template wostream& operator<<(wostream&, const wchar_t*); template wostream& operator<<(wostream&, const wchar_t*);
template wostream& operator<<(wostream&, const char*); template wostream& operator<<(wostream&, const char*);
template wostream& operator<<(wostream&, _Setfill<wchar_t>);
#endif #endif
......
// Copyright (C) 2001 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// Some members need to be explicitly instantiated, so that users can build
// their own code with -fno-implicit-templates and not suffer from a zillion
// link errors.
// { dg-options "-fno-implicit-templates" }
#include <fstream>
#include <istream>
#include <ostream>
#include <sstream>
#include <iomanip>
#include <testsuite_hooks.h>
// PR libstdc++/3829
void
test01()
{
using namespace std;
string x (" this is text");
istringstream sin (x);
ostringstream sout;
// same order as in bits/std_iomanip.h
sin >> resetiosflags(ios_base::dec)
>> setiosflags(ios_base::dec)
>> setbase(ios_base::dec)
>> setfill('c')
>> setprecision(5)
>> setw(20)
>> ws;
VERIFY(sin);
sout << resetiosflags(ios_base::dec)
<< setiosflags(ios_base::dec)
<< setbase(ios_base::dec)
<< setfill('c')
<< setprecision(5)
<< setw(20)
<< ends << flush << endl;
VERIFY(sout);
}
int
main()
{
test01();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment