string-inst.cc revision 285830
1135768Strhodes// Components for manipulating sequences of characters -*- C++ -*-
2135768Strhodes
3135768Strhodes// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
4135768Strhodes// Free Software Foundation, Inc.
5135768Strhodes//
6135768Strhodes// This file is part of the GNU ISO C++ Library.  This library is free
7135768Strhodes// software; you can redistribute it and/or modify it under the
8135768Strhodes// terms of the GNU General Public License as published by the
9135768Strhodes// Free Software Foundation; either version 2, or (at your option)
10135768Strhodes// any later version.
11135768Strhodes
12135768Strhodes// This library is distributed in the hope that it will be useful,
13135768Strhodes// but WITHOUT ANY WARRANTY; without even the implied warranty of
14135768Strhodes// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15135768Strhodes// GNU General Public License for more details.
16135768Strhodes
17135768Strhodes// You should have received a copy of the GNU General Public License along
18135768Strhodes// with this library; see the file COPYING.  If not, write to the Free
19135768Strhodes// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
20135768Strhodes// USA.
21135768Strhodes
22135768Strhodes// As a special exception, you may use this file as part of a free software
23135768Strhodes// library without restriction.  Specifically, if other files instantiate
24135768Strhodes// templates or use macros or inline functions from this file, or you compile
25135768Strhodes// this file and link it with other files to produce an executable, this
26135768Strhodes// file does not by itself cause the resulting executable to be covered by
27135768Strhodes// the GNU General Public License.  This exception does not however
28135768Strhodes// invalidate any other reasons why the executable file might be covered by
29135768Strhodes// the GNU General Public License.
30135768Strhodes
31135768Strhodes//
32135768Strhodes// ISO C++ 14882: 21  Strings library
33135768Strhodes//
34135768Strhodes
35135768Strhodes// Written by Jason Merrill based upon the specification by Takanori Adachi
36135768Strhodes// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
37135768Strhodes
38135768Strhodes#include <string>
39135768Strhodes
40135768Strhodes// Instantiation configuration.
41135768Strhodes#ifndef C
42135768Strhodes# define C char
43135768Strhodes#endif
44135768Strhodes
45135768Strhodes_GLIBCXX_BEGIN_NAMESPACE(std)
46165009Sharti
47165009Sharti  typedef basic_string<C> S;
48135768Strhodes
49135768Strhodes  template class basic_string<C>;
50135768Strhodes  template S operator+(const C*, const S&);
51135768Strhodes  template S operator+(C, const S&);
52135768Strhodes  template S operator+(const S&, const S&);
53135768Strhodes
54135768Strhodes  // Only one template keyword allowed here.
55135768Strhodes  // See core issue #46 (NAD)
56135768Strhodes  // http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_closed.html#46
57135768Strhodes  template
58135768Strhodes    S::basic_string(C*, C*, const allocator<C>&);
59135768Strhodes
60135768Strhodes  template
61135768Strhodes    S::basic_string(const C*, const C*, const allocator<C>&);
62135768Strhodes
63135768Strhodes  template
64135768Strhodes    S::basic_string(S::iterator, S::iterator, const allocator<C>&);
65135768Strhodes
66135768Strhodes  template
67135768Strhodes    C*
68135768Strhodes    S::_S_construct(S::iterator, S::iterator,
69		    const allocator<C>&, forward_iterator_tag);
70
71  template
72    C*
73    S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag);
74
75  template
76    C*
77    S::_S_construct(const C*, const C*, const allocator<C>&,
78		    forward_iterator_tag);
79
80_GLIBCXX_END_NAMESPACE
81
82_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
83
84  using std::S;
85  template bool operator==(const S::iterator&, const S::iterator&);
86  template bool operator==(const S::const_iterator&, const S::const_iterator&);
87
88_GLIBCXX_END_NAMESPACE
89