concept-inst.cc

00001 // Concept checking instantiations -*- C++ -*-
00002 
00003 // Copyright (C) 2001, 2002, 2003 Free Software Foundation
00004 //
00005 // This file is part of the GNU ISO C++ Library.  This library is free
00006 // software; you can redistribute it and/or modify it under the
00007 // terms of the GNU General Public License as published by the
00008 // Free Software Foundation; either version 2, or (at your option)
00009 // any later version.
00010 
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 // GNU General Public License for more details.
00015 
00016 // You should have received a copy of the GNU General Public License along
00017 // with this library; see the file COPYING.  If not, write to the Free
00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
00019 // USA.
00020 
00021 // As a special exception, you may use this file as part of a free software
00022 // library without restriction.  Specifically, if other files instantiate
00023 // templates or use macros or inline functions from this file, or you compile
00024 // this file and link it with other files to produce an executable, this
00025 // file does not by itself cause the resulting executable to be covered by
00026 // the GNU General Public License.  This exception does not however
00027 // invalidate any other reasons why the executable file might be covered by
00028 // the GNU General Public License.
00029 
00030 // The implementation of some of the more complex checks uses the simple
00031 // checks (good reuse of code), thereby requiring that the simple checks
00032 // be instantiated somewhere.  The simple checks use other simple checks,
00033 // and so on, until a couple hundred symbols all need instantiations.  We
00034 // explicitly instantiate the initial set of symbols; compiling this file
00035 // with -fimplicit-templates will take care of the rest for us.
00036 
00037 #include <bits/concept_check.h>
00038 
00039 #ifdef _GLIBCXX_CONCEPT_CHECKS
00040 
00041 #include <memory>
00042 #include <iterator>
00043 #include <ostream>
00044 
00045 #define _Instantiate(...) template void __function_requires< __VA_ARGS__ > ()
00046 
00047 namespace __gnu_cxx
00048 {
00049   template void __aux_require_boolean_expr<bool>(bool const&);
00050 
00051   _Instantiate(_ConvertibleConcept<unsigned, unsigned> );
00052 
00053   _Instantiate(_InputIteratorConcept<char*> );
00054 
00055   _Instantiate(_InputIteratorConcept<char const*> );
00056 
00057 #ifdef _GLIBCXX_USE_WCHAR_T
00058   _Instantiate(_InputIteratorConcept<wchar_t*> );
00059 
00060   _Instantiate(_InputIteratorConcept<wchar_t const*> );
00061 
00062   _Instantiate(_LessThanComparableConcept<wchar_t*> );
00063 #endif
00064 
00065   _Instantiate(_LessThanComparableConcept<char*> );
00066 
00067   _Instantiate(_LessThanComparableConcept<int> );
00068 
00069   _Instantiate(_LessThanComparableConcept<long> );
00070 
00071   _Instantiate(_LessThanComparableConcept<long long> );
00072 
00073   _Instantiate(_LessThanComparableConcept<unsigned> );
00074 
00075   _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
00076     char, std::char_traits<char> >, char> );
00077 
00078 #ifdef _GLIBCXX_USE_WCHAR_T
00079   _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
00080     wchar_t, std::char_traits<wchar_t> >, wchar_t> );
00081 #endif
00082 
00083   _Instantiate(_RandomAccessIteratorConcept<char*> );
00084 
00085   _Instantiate(_RandomAccessIteratorConcept<char const*> );
00086 
00087   _Instantiate(_RandomAccessIteratorConcept<
00088     __normal_iterator<char const*, std::string> > );
00089 
00090   _Instantiate(_RandomAccessIteratorConcept<
00091     __normal_iterator<char*, std::string> > );
00092 
00093 #ifdef _GLIBCXX_USE_WCHAR_T
00094   _Instantiate(_RandomAccessIteratorConcept<
00095     __normal_iterator<wchar_t const*,
00096     std::basic_string<wchar_t, std::char_traits<wchar_t>,
00097                                std::allocator<wchar_t> > > > );
00098 
00099   _Instantiate(_RandomAccessIteratorConcept<
00100     __normal_iterator<wchar_t*,
00101     std::basic_string<wchar_t, std::char_traits<wchar_t>,
00102                                std::allocator<wchar_t> > > > );
00103 
00104   _Instantiate(_RandomAccessIteratorConcept<wchar_t*> );
00105 
00106   _Instantiate(_RandomAccessIteratorConcept<wchar_t const*> );
00107 #endif
00108 } // namespace __gnu_cxx
00109 
00110 #undef _Instantiate
00111 
00112 #endif

Generated on Fri May 6 01:08:53 2005 for libstdc++-v3 Source by  doxygen 1.4.2