source: trunk/gcc/libstdc++-v3/src/concept-inst.cc

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.9 KB
Line 
1// Concept checking instantiations -*- C++ -*-
2
3// Copyright (C) 2001, 2002, 2003 Free Software Foundation
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 2, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING. If not, write to the Free
18// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19// USA.
20
21// As a special exception, you may use this file as part of a free software
22// library without restriction. Specifically, if other files instantiate
23// templates or use macros or inline functions from this file, or you compile
24// this file and link it with other files to produce an executable, this
25// file does not by itself cause the resulting executable to be covered by
26// the GNU General Public License. This exception does not however
27// invalidate any other reasons why the executable file might be covered by
28// the GNU General Public License.
29
30// The implementation of some of the more complex checks uses the simple
31// checks (good reuse of code), thereby requiring that the simple checks
32// be instantiated somewhere. The simple checks use other simple checks,
33// and so on, until a couple hundred symbols all need instantiations. We
34// explicitly instantiate the initial set of symbols; compiling this file
35// with -fimplicit-templates will take care of the rest for us.
36
37#include <bits/concept_check.h>
38
39#ifdef _GLIBCPP_CONCEPT_CHECKS
40
41#include <memory>
42#include <iterator>
43#include <ostream>
44
45#define _Instantiate(...) template void __function_requires< __VA_ARGS__ > ()
46
47namespace __gnu_cxx
48{
49 template void __aux_require_boolean_expr<bool>(bool const&);
50
51 _Instantiate(_ConvertibleConcept<unsigned, unsigned> );
52
53 _Instantiate(_InputIteratorConcept<char*> );
54
55 _Instantiate(_InputIteratorConcept<char const*> );
56
57#ifdef _GLIBCPP_USE_WCHAR_T
58 _Instantiate(_InputIteratorConcept<wchar_t*> );
59
60 _Instantiate(_InputIteratorConcept<wchar_t const*> );
61
62 _Instantiate(_LessThanComparableConcept<wchar_t*> );
63#endif
64
65 _Instantiate(_LessThanComparableConcept<char*> );
66
67 _Instantiate(_LessThanComparableConcept<int> );
68
69 _Instantiate(_LessThanComparableConcept<long> );
70
71 _Instantiate(_LessThanComparableConcept<long long> );
72
73 _Instantiate(_LessThanComparableConcept<unsigned> );
74
75 _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
76 char, std::char_traits<char> >, char> );
77
78#ifdef _GLIBCPP_USE_WCHAR_T
79 _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
80 wchar_t, std::char_traits<wchar_t> >, wchar_t> );
81#endif
82
83 _Instantiate(_RandomAccessIteratorConcept<char*> );
84
85 _Instantiate(_RandomAccessIteratorConcept<char const*> );
86
87 _Instantiate(_RandomAccessIteratorConcept<
88 __normal_iterator<char const*, std::string> > );
89
90 _Instantiate(_RandomAccessIteratorConcept<
91 __normal_iterator<char*, std::string> > );
92
93#ifdef _GLIBCPP_USE_WCHAR_T
94 _Instantiate(_RandomAccessIteratorConcept<
95 __normal_iterator<wchar_t const*,
96 std::basic_string<wchar_t, std::char_traits<wchar_t>,
97 std::allocator<wchar_t> > > > );
98
99 _Instantiate(_RandomAccessIteratorConcept<
100 __normal_iterator<wchar_t*,
101 std::basic_string<wchar_t, std::char_traits<wchar_t>,
102 std::allocator<wchar_t> > > > );
103
104 _Instantiate(_RandomAccessIteratorConcept<wchar_t*> );
105
106 _Instantiate(_RandomAccessIteratorConcept<wchar_t const*> );
107#endif
108} // namespace __gnu_cxx
109
110#undef _Instantiate
111
112#endif
Note: See TracBrowser for help on using the repository browser.