1 // Components for manipulating sequences of characters -*- C++ -*- 2 3 // Copyright (C) 1997, 1998, 2009, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 4 // Free Software Foundation, Inc. 5 // 6 // This file is part of the GNU ISO C++ Library. This library is free 7 // software; you can redistribute it and/or modify it under the 8 // terms of the GNU General Public License as published by the 9 // Free Software Foundation; either version 3, or (at your option) 10 // any later version. 11 12 // This library is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 // GNU General Public License for more details. 16 17 // Under Section 7 of GPL version 3, you are granted additional 18 // permissions described in the GCC Runtime Library Exception, version 19 // 3.1, as published by the Free Software Foundation. 20 21 // You should have received a copy of the GNU General Public License and 22 // a copy of the GCC Runtime Library Exception along with this program; 23 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24 // <http://www.gnu.org/licenses/>. 25 26 // 27 // ISO C++ 14882: 21 Strings library 28 // 29 30 // Written by Jason Merrill based upon the specification by Takanori Adachi 31 // in ANSI X3J16/94-0013R2. Rewritten by Nathan Myers. 32 33 #include <string> 34 35 // Instantiation configuration. 36 #ifndef C 37 # define C char 38 #endif 39 40 namespace std _GLIBCXX_VISIBILITY(default) 41 { 42 _GLIBCXX_BEGIN_NAMESPACE_VERSION 43 44 typedef basic_string<C> S; 45 46 template class basic_string<C>; 47 template S operator+(const C*, const S&); 48 template S operator+(C, const S&); 49 template S operator+(const S&, const S&); 50 51 // Only one template keyword allowed here. 52 // See core issue #46 (NAD) 53 // http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_closed.html#46 54 template 55 S::basic_string(C*, C*, const allocator<C>&); 56 57 template 58 S::basic_string(const C*, const C*, const allocator<C>&); 59 60 template 61 S::basic_string(S::iterator, S::iterator, const allocator<C>&); 62 63 template 64 C* 65 S::_S_construct(S::iterator, S::iterator, 66 const allocator<C>&, forward_iterator_tag); 67 68 template 69 C* 70 S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag); 71 72 template 73 C* 74 S::_S_construct(const C*, const C*, const allocator<C>&, 75 forward_iterator_tag); 76 77 _GLIBCXX_END_NAMESPACE_VERSION 78 } // namespace 79 80 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) 81 { 82 _GLIBCXX_BEGIN_NAMESPACE_VERSION 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_VERSION 89 } // namespace 90