197403Sobrien// Components for manipulating sequences of characters -*- C++ -*-
297403Sobrien
3169691Skan// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
497403Sobrien// Free Software Foundation, Inc.
597403Sobrien//
697403Sobrien// This file is part of the GNU ISO C++ Library.  This library is free
797403Sobrien// software; you can redistribute it and/or modify it under the
897403Sobrien// terms of the GNU General Public License as published by the
997403Sobrien// Free Software Foundation; either version 2, or (at your option)
1097403Sobrien// any later version.
1197403Sobrien
1297403Sobrien// This library is distributed in the hope that it will be useful,
1397403Sobrien// but WITHOUT ANY WARRANTY; without even the implied warranty of
1497403Sobrien// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1597403Sobrien// GNU General Public License for more details.
1697403Sobrien
1797403Sobrien// You should have received a copy of the GNU General Public License along
1897403Sobrien// with this library; see the file COPYING.  If not, write to the Free
19169691Skan// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
2097403Sobrien// USA.
2197403Sobrien
2297403Sobrien// As a special exception, you may use this file as part of a free software
2397403Sobrien// library without restriction.  Specifically, if other files instantiate
2497403Sobrien// templates or use macros or inline functions from this file, or you compile
25107606Sobrien// this file and link it with other files to produce an executable, this
26107606Sobrien// file does not by itself cause the resulting executable to be covered by
2797403Sobrien// the GNU General Public License.  This exception does not however
2897403Sobrien// invalidate any other reasons why the executable file might be covered by
2997403Sobrien// the GNU General Public License.
3097403Sobrien
3197403Sobrien//
3297403Sobrien// ISO C++ 14882: 21  Strings library
3397403Sobrien//
3497403Sobrien
3597403Sobrien// Written by Jason Merrill based upon the specification by Takanori Adachi
3697403Sobrien// in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers.
3797403Sobrien
3897403Sobrien#include <string>
3997403Sobrien
4097403Sobrien// Instantiation configuration.
4197403Sobrien#ifndef C
4297403Sobrien# define C char
4397403Sobrien#endif
4497403Sobrien
45169691Skan_GLIBCXX_BEGIN_NAMESPACE(std)
46169691Skan
4797403Sobrien  typedef basic_string<C> S;
4897403Sobrien
4997403Sobrien  template class basic_string<C>;
5097403Sobrien  template S operator+(const C*, const S&);
5197403Sobrien  template S operator+(C, const S&);
52107606Sobrien  template S operator+(const S&, const S&);
5397403Sobrien
5497403Sobrien  // Only one template keyword allowed here.
5597403Sobrien  // See core issue #46 (NAD)
5697403Sobrien  // http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_closed.html#46
5797403Sobrien  template
5897403Sobrien    S::basic_string(C*, C*, const allocator<C>&);
5997403Sobrien
6097403Sobrien  template
6197403Sobrien    S::basic_string(const C*, const C*, const allocator<C>&);
6297403Sobrien
6397403Sobrien  template
6497403Sobrien    S::basic_string(S::iterator, S::iterator, const allocator<C>&);
6597403Sobrien
6697403Sobrien  template
6797403Sobrien    C*
6897403Sobrien    S::_S_construct(S::iterator, S::iterator,
6997403Sobrien		    const allocator<C>&, forward_iterator_tag);
7097403Sobrien
7197403Sobrien  template
7297403Sobrien    C*
7397403Sobrien    S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag);
7497403Sobrien
7597403Sobrien  template
7697403Sobrien    C*
7797403Sobrien    S::_S_construct(const C*, const C*, const allocator<C>&,
7897403Sobrien		    forward_iterator_tag);
7997403Sobrien
80169691Skan_GLIBCXX_END_NAMESPACE
81169691Skan
82169691Skan_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
83169691Skan
84132720Skan  using std::S;
85132720Skan  template bool operator==(const S::iterator&, const S::iterator&);
86132720Skan  template bool operator==(const S::const_iterator&, const S::const_iterator&);
87169691Skan
88169691Skan_GLIBCXX_END_NAMESPACE
89