OSDN Git Service

2001-11-02 Phil Edwards <pme@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / src / concept-inst.cc
1 // Concept checking instantiations -*- C++ -*-
2
3 // Copyright (C) 2001 Free Software Foundation
4 //
5 // This file is part of GNU CC.
6 //
7 // GNU CC is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 2, or (at your option)
10 // any later version.
11 // 
12 // GNU CC 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 // You should have received a copy of the GNU General Public License
18 // along with GNU CC; see the file COPYING.  If not, write to
19 // the Free Software Foundation, 59 Temple Place - Suite 330,
20 // Boston, MA 02111-1307, USA.
21
22 // As a special exception, you may use this file as part of a free software
23 // library without restriction.  Specifically, if other files instantiate
24 // templates or use macros or inline functions from this file, or you compile
25 // this file and link it with other files to produce an executable, this
26 // file does not by itself cause the resulting executable to be covered by
27 // the GNU General Public License.  This exception does not however
28 // invalidate any other reasons why the executable file might be covered by
29 // the GNU General Public License.
30
31 // The implementation of some of the more complex checks uses the simple
32 // checks (good reuse of code), thereby requiring that the simple checks
33 // be instantiated somewhere.  The simple checks use other simple checks,
34 // and so on, until a couple hundred symbols all need instantiations.  We
35 // explicitly instantiate the initial set of symbols; compiling this file
36 // with -fimplicit-templates will take care of the rest for us.
37
38 #include <bits/concept_check.h>
39
40 #ifdef _GLIBCPP_CONCEPT_CHECKS
41
42 #include <bits/stl_alloc.h>
43 #include <bits/std_vector.h>
44 #include <bits/std_ostream.h>
45
46 #define _Instantiate(...) template void __function_requires< __VA_ARGS__ > ()
47
48 namespace __gnu_cxx
49 {
50
51   template void __aux_require_boolean_expr<bool>(bool const&);
52
53   _Instantiate(_BidirectionalIteratorConcept<
54     std::__normal_iterator< std::locale::facet**,
55     std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
56
57   _Instantiate(_BidirectionalIteratorConcept<
58     std::__normal_iterator< unsigned*,
59     std::vector<unsigned, std::allocator<unsigned> > > > );
60
61   _Instantiate(_ConvertibleConcept<std::locale::facet*, std::locale::facet*> );
62
63   _Instantiate(_ConvertibleConcept<unsigned, unsigned> );
64
65   _Instantiate(_InputIteratorConcept<char*> );
66
67   _Instantiate(_InputIteratorConcept<char const*> );
68
69   _Instantiate(_InputIteratorConcept<std::locale::facet**> );
70
71   _Instantiate(_InputIteratorConcept<
72     std::__normal_iterator< std::locale::facet* const*,
73     std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
74
75   _Instantiate(_InputIteratorConcept<
76     std::__normal_iterator< std::locale::facet**,
77     std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
78
79   _Instantiate(_InputIteratorConcept<
80     std::__normal_iterator< unsigned*,
81     std::vector<unsigned, std::allocator<unsigned> > > > );
82
83 #ifdef _GLIBCPP_USE_WCHAR_T
84   _Instantiate(_InputIteratorConcept<wchar_t*> );
85
86   _Instantiate(_InputIteratorConcept<wchar_t const*> );
87
88   _Instantiate(_LessThanComparableConcept<wchar_t*> );
89 #endif
90
91   _Instantiate(_LessThanComparableConcept<char*> );
92
93   _Instantiate(_LessThanComparableConcept<int> );
94
95   _Instantiate(_LessThanComparableConcept<long> );
96
97   _Instantiate(_LessThanComparableConcept<long long> );
98
99   _Instantiate(_LessThanComparableConcept<unsigned> );
100
101   _Instantiate(_Mutable_BidirectionalIteratorConcept<
102     std::__normal_iterator< std::locale::facet**,
103     std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
104
105   _Instantiate(_Mutable_BidirectionalIteratorConcept<
106     std::__normal_iterator< unsigned*,
107     std::vector<unsigned, std::allocator<unsigned> > > > );
108
109   _Instantiate(_Mutable_ForwardIteratorConcept<
110     std::__normal_iterator< std::locale::facet**,
111     std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
112
113   _Instantiate(_OutputIteratorConcept<
114     std::locale::facet**, std::locale::facet*> );
115
116   _Instantiate(_OutputIteratorConcept<
117     std::__normal_iterator< std::locale::facet**,
118       std::vector<std::locale::facet*, std::allocator<std::locale::facet* > > >,
119     std::locale::facet* > );
120
121   _Instantiate(_OutputIteratorConcept<std::__normal_iterator<
122     unsigned*, std::vector<unsigned, std::allocator<unsigned> > >, unsigned> );
123
124   _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
125     char, std::char_traits<char> >, char> );
126
127 #ifdef _GLIBCPP_USE_WCHAR_T
128   _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
129     wchar_t, std::char_traits<wchar_t> >, wchar_t> );
130 #endif
131
132   _Instantiate(_RandomAccessIteratorConcept<char*> );
133
134   _Instantiate(_RandomAccessIteratorConcept<char const*> );
135
136   _Instantiate(_RandomAccessIteratorConcept<
137     std::__normal_iterator<char const*, std::string> > );
138
139   _Instantiate(_RandomAccessIteratorConcept<
140     std::__normal_iterator<char*, std::string> > );
141
142 #ifdef _GLIBCPP_USE_WCHAR_T
143   _Instantiate(_RandomAccessIteratorConcept<
144     std::__normal_iterator<wchar_t const*,
145     std::basic_string<wchar_t, std::char_traits<wchar_t>,
146                                std::allocator<wchar_t> > > > );
147
148   _Instantiate(_RandomAccessIteratorConcept<
149     std::__normal_iterator<wchar_t*,
150     std::basic_string<wchar_t, std::char_traits<wchar_t>,
151                                std::allocator<wchar_t> > > > );
152
153   _Instantiate(_RandomAccessIteratorConcept<wchar_t*> );
154
155   _Instantiate(_RandomAccessIteratorConcept<wchar_t const*> );
156 #endif
157
158 } // namespace __gnu_cxx
159
160 #undef _Instantiate
161
162 #endif
163
164