03d0f4af2d
* 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
136 lines
3.4 KiB
C++
136 lines
3.4 KiB
C++
// Instantiation file for the -*- C++ -*- string classes.
|
|
// Copyright (C) 1994 Free Software Foundation
|
|
|
|
// This file is part of the GNU ANSI 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.
|
|
|
|
// As a special exception, if you link this library with files
|
|
// compiled with a GNU compiler to produce an executable, this does not cause
|
|
// the resulting executable to be covered by the GNU General Public License.
|
|
// This exception does not however invalidate any other reasons why
|
|
// the executable file might be covered by the GNU General Public License.
|
|
|
|
// Written by Jason Merrill based upon the specification by Takanori Adachi
|
|
// in ANSI X3J16/94-0013R2.
|
|
|
|
#ifdef __GNUG__
|
|
#ifdef TRAITS
|
|
#ifdef C
|
|
#pragma implementation "std/straits.h"
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#include <string>
|
|
|
|
#ifdef C
|
|
typedef char c;
|
|
#endif
|
|
#ifdef W
|
|
typedef wchar_t c;
|
|
#endif
|
|
|
|
#if defined(TRAITS) && !defined(C)
|
|
template class string_char_traits <c>;
|
|
#else
|
|
/* string_char_traits<char> is already explicitly specialized in
|
|
std/straits.h. */
|
|
#endif
|
|
|
|
typedef basic_string <c> s;
|
|
|
|
#ifdef MAIN
|
|
template class basic_string <c>;
|
|
#endif
|
|
|
|
#ifdef ADDSS
|
|
template s operator+ (const s&, const s&);
|
|
#endif
|
|
#ifdef ADDPS
|
|
template s operator+ (const c*, const s&);
|
|
#endif
|
|
#ifdef ADDCS
|
|
template s operator+ (c, const s&);
|
|
#endif
|
|
#ifdef ADDSP
|
|
template s operator+ (const s&, const c*);
|
|
#endif
|
|
#ifdef ADDSC
|
|
template s operator+ (const s&, c);
|
|
#endif
|
|
#ifdef EQSS
|
|
template bool operator== (const s&, const s&);
|
|
#endif
|
|
#ifdef EQPS
|
|
template bool operator== (const c*, const s&);
|
|
#endif
|
|
#ifdef EQSP
|
|
template bool operator== (const s&, const c*);
|
|
#endif
|
|
#ifdef NESS
|
|
template bool operator!= (const s&, const s&);
|
|
#endif
|
|
#ifdef NEPS
|
|
template bool operator!= (const c*, const s&);
|
|
#endif
|
|
#ifdef NESP
|
|
template bool operator!= (const s&, const c*);
|
|
#endif
|
|
#ifdef LTSS
|
|
template bool operator< (const s&, const s&);
|
|
#endif
|
|
#ifdef LTPS
|
|
template bool operator< (const c*, const s&);
|
|
#endif
|
|
#ifdef LTSP
|
|
template bool operator< (const s&, const c*);
|
|
#endif
|
|
#ifdef GTSS
|
|
template bool operator> (const s&, const s&);
|
|
#endif
|
|
#ifdef GTPS
|
|
template bool operator> (const c*, const s&);
|
|
#endif
|
|
#ifdef GTSP
|
|
template bool operator> (const s&, const c*);
|
|
#endif
|
|
#ifdef LESS
|
|
template bool operator<= (const s&, const s&);
|
|
#endif
|
|
#ifdef LEPS
|
|
template bool operator<= (const c*, const s&);
|
|
#endif
|
|
#ifdef LESP
|
|
template bool operator<= (const s&, const c*);
|
|
#endif
|
|
#ifdef GESS
|
|
template bool operator>= (const s&, const s&);
|
|
#endif
|
|
#ifdef GEPS
|
|
template bool operator>= (const c*, const s&);
|
|
#endif
|
|
#ifdef GESP
|
|
template bool operator>= (const s&, const c*);
|
|
#endif
|
|
#ifdef EXTRACT
|
|
template istream& operator>> (istream&, s&);
|
|
#endif // EXTRACT
|
|
#ifdef INSERT
|
|
template ostream& operator<< (ostream&, const s&);
|
|
#endif // INSERT
|
|
#ifdef GETLINE
|
|
template istream& getline (istream&, s&, c);
|
|
#endif
|