diff options
author | Mark Mitchell <mark@markmitchell.com> | 1998-08-23 12:47:24 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1998-08-23 12:47:24 +0000 |
commit | 03d0f4af2d5607dacc56b946b49e024e71dd7fb7 (patch) | |
tree | 1a569fd48a34a3e468b6fe1fcacbc60c724d1626 /libio | |
parent | 5d7045be13252dfa6c183863cbe1a3335d34fec5 (diff) | |
download | gcc-03d0f4af2d5607dacc56b946b49e024e71dd7fb7.zip gcc-03d0f4af2d5607dacc56b946b49e024e71dd7fb7.tar.gz gcc-03d0f4af2d5607dacc56b946b49e024e71dd7fb7.tar.bz2 |
iomanip.h: Use __extension__ for `extern' explicit template instantiations.
* iomanip.h: Use __extension__ for `extern' explicit template
instantiations.
* sinst.cc: Don't explicitly instantiation string_char_traits<char>.
* cinst.cc: Likewiwse, for complex<float>, complex<double>,
complex<long double>.
* extend.texi: Remove description of extension to explicit
instantiation that is now endorsed by standard C++.
* decl2.c (grok_array_decl): Add comment.
(mark_used): Don't instantiate an explicit instantiation.
* friend.c (make_friend_class): Remove bogus comment. Fix check
for partial specializations.
* pt.c (check_explicit_specialization): Don't
SET_DECL_EXPLICIT_INSTANTIATION here.
(mark_decl_instantiated): Or here.
(do_decl_instantiation): Do it here, instead. Add checks for
duplicate explicit instantiations, etc. Tidy.
(do_type_instantiation): Likewise.
(instantiate_decl): Improve comments. Complain about explicit
instantiations where no definition is available.
* cp-tree.h (ansi_null_node): Remove.
* call.c (build_over_call): Warn about converting NULL to an
arithmetic type.
* cvt.c (build_expr_type_conversion): Likewise. Use
null_ptr_cst_p instead of expanding it inline.
* decl.c (ansi_null_node): Remove.
(init_decl_processing): Make null_node always have integral type.
* except.c (build_throw): Warn about converting NULL to an
arithmetic type.
* lex.c (init_parse): Remove handling of ansi_null_node.
* pt.c (type_unification_real): Don't convert NULL to void* type.
* typeck.c (build_binary_op_nodefault): Fix NULL warnings.
(convert_for_assignment): Warn about converting NULL to an
arithmetic type.
(convert_for_initialization): Likewise.
From-SVN: r21915
Diffstat (limited to 'libio')
-rw-r--r-- | libio/ChangeLog | 5 | ||||
-rw-r--r-- | libio/iomanip.h | 16 |
2 files changed, 15 insertions, 6 deletions
diff --git a/libio/ChangeLog b/libio/ChangeLog index dfd5299..ee9ce72 100644 --- a/libio/ChangeLog +++ b/libio/ChangeLog @@ -1,3 +1,8 @@ +1998-08-23 Mark Mitchell <mark@markmitchell.com> + + * iomanip.h: Use __extension__ for `extern' explicit template + instantiations. + 1998-08-17 Ulrich Drepper <drepper@cygnus.com> * strfile.h: Define __PMT if not already defined. diff --git a/libio/iomanip.h b/libio/iomanip.h index d80e98e..7c0232e 100644 --- a/libio/iomanip.h +++ b/libio/iomanip.h @@ -68,8 +68,8 @@ public: }; #ifdef __GNUG__ -extern template class smanip<int>; -extern template class smanip<ios::fmtflags>; +__extension__ extern template class smanip<int>; +__extension__ extern template class smanip<ios::fmtflags>; #endif template<class TP> @@ -81,10 +81,14 @@ inline ostream& operator<<(ostream& o, const smanip<TP>& m) { (*m._f)(o, m._a); return o;} #ifdef __GNUG__ -extern template istream& operator>>(istream&, const smanip<int>&); -extern template istream& operator>>(istream&, const smanip<ios::fmtflags>&); -extern template ostream& operator<<(ostream&, const smanip<int>&); -extern template ostream& operator<<(ostream&, const smanip<ios::fmtflags>&); +__extension__ extern +template istream& operator>>(istream&, const smanip<int>&); +__extension__ extern +template istream& operator>>(istream&, const smanip<ios::fmtflags>&); +__extension__ extern +template ostream& operator<<(ostream&, const smanip<int>&); +__extension__ extern +template ostream& operator<<(ostream&, const smanip<ios::fmtflags>&); #endif //----------------------------------------------------------------------------- |