aboutsummaryrefslogtreecommitdiff
path: root/libio
diff options
context:
space:
mode:
authorMark Mitchell <mark@markmitchell.com>1998-08-23 12:47:24 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1998-08-23 12:47:24 +0000
commit03d0f4af2d5607dacc56b946b49e024e71dd7fb7 (patch)
tree1a569fd48a34a3e468b6fe1fcacbc60c724d1626 /libio
parent5d7045be13252dfa6c183863cbe1a3335d34fec5 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--libio/iomanip.h16
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
//-----------------------------------------------------------------------------