string-inst.cc revision 169691
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