1253883Ssjg// Concept checking instantiations -*- C++ -*-
2246149Ssjg
3246149Ssjg// Copyright (C) 2001-2020 Free Software Foundation, Inc.
4246149Ssjg//
5246149Ssjg// This file is part of the GNU ISO C++ Library.  This library is free
6246149Ssjg// software; you can redistribute it and/or modify it under the
7246149Ssjg// terms of the GNU General Public License as published by the
8246149Ssjg// Free Software Foundation; either version 3, or (at your option)
9246149Ssjg// any later version.
10246149Ssjg
11246149Ssjg// This library is distributed in the hope that it will be useful,
12246149Ssjg// but WITHOUT ANY WARRANTY; without even the implied warranty of
13246149Ssjg// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14246149Ssjg// GNU General Public License for more details.
15246149Ssjg
16246149Ssjg// Under Section 7 of GPL version 3, you are granted additional
17246149Ssjg// permissions described in the GCC Runtime Library Exception, version
18246149Ssjg// 3.1, as published by the Free Software Foundation.
19246149Ssjg
20246149Ssjg// You should have received a copy of the GNU General Public License and
21246149Ssjg// a copy of the GCC Runtime Library Exception along with this program;
22246149Ssjg// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23246149Ssjg// <http://www.gnu.org/licenses/>.
24246149Ssjg
25246149Ssjg// The implementation of some of the more complex checks uses the simple
26246149Ssjg// checks (good reuse of code), thereby requiring that the simple checks
27246149Ssjg// be instantiated somewhere.  The simple checks use other simple checks,
28246149Ssjg// and so on, until a couple hundred symbols all need instantiations.  We
29246149Ssjg// explicitly instantiate the initial set of symbols; compiling this file
30246149Ssjg// with -fimplicit-templates will take care of the rest for us.
31246149Ssjg
32246149Ssjg#define _GLIBCXX_USE_CXX11_ABI 0
33246149Ssjg#include <bits/concept_check.h>
34246149Ssjg
35246149Ssjg#ifdef _GLIBCXX_CONCEPT_CHECKS
36246149Ssjg
37246149Ssjg#include <memory>
38246149Ssjg#include <iterator>
39246149Ssjg#include <ostream>
40246149Ssjg
41246149Ssjg#define _Instantiate(...) template void __function_requires< __VA_ARGS__ > ()
42246149Ssjg
43246149Ssjgnamespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
44246149Ssjg{
45246149Ssjg_GLIBCXX_BEGIN_NAMESPACE_VERSION
46246149Ssjg
47246149Ssjg  template void __aux_require_boolean_expr<bool>(bool const&);
48246149Ssjg
49246149Ssjg  _Instantiate(_ConvertibleConcept<unsigned, unsigned> );
50246149Ssjg
51246149Ssjg  _Instantiate(_InputIteratorConcept<char*> );
52246149Ssjg
53253883Ssjg  _Instantiate(_InputIteratorConcept<char const*> );
54253883Ssjg
55253883Ssjg#ifdef _GLIBCXX_USE_WCHAR_T
56253883Ssjg  _Instantiate(_InputIteratorConcept<wchar_t*> );
57253883Ssjg
58253883Ssjg  _Instantiate(_InputIteratorConcept<wchar_t const*> );
59253883Ssjg
60253883Ssjg  _Instantiate(_LessThanComparableConcept<wchar_t*> );
61253883Ssjg#endif
62246149Ssjg
63246149Ssjg  _Instantiate(_LessThanComparableConcept<char*> );
64246149Ssjg
65246149Ssjg  _Instantiate(_LessThanComparableConcept<int> );
66246149Ssjg
67246149Ssjg  _Instantiate(_LessThanComparableConcept<long> );
68246149Ssjg
69246149Ssjg  _Instantiate(_LessThanComparableConcept<long long> );
70246149Ssjg
71246149Ssjg  _Instantiate(_LessThanComparableConcept<unsigned> );
72246149Ssjg
73246149Ssjg  _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
74246149Ssjg    char, std::char_traits<char> >, char> );
75246149Ssjg
76246149Ssjg#ifdef _GLIBCXX_USE_WCHAR_T
77246149Ssjg  _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
78246149Ssjg    wchar_t, std::char_traits<wchar_t> >, wchar_t> );
79246149Ssjg#endif
80246149Ssjg
81246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<char*> );
82246149Ssjg
83246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<char const*> );
84246149Ssjg
85246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<
86246149Ssjg    __normal_iterator<char const*, std::string> > );
87246149Ssjg
88246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<
89246149Ssjg    __normal_iterator<char*, std::string> > );
90246149Ssjg
91246149Ssjg#ifdef _GLIBCXX_USE_WCHAR_T
92246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<
93246149Ssjg    __normal_iterator<wchar_t const*,
94246149Ssjg    std::basic_string<wchar_t, std::char_traits<wchar_t>,
95246149Ssjg                               std::allocator<wchar_t> > > > );
96246149Ssjg
97246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<
98246149Ssjg    __normal_iterator<wchar_t*,
99246149Ssjg    std::basic_string<wchar_t, std::char_traits<wchar_t>,
100246149Ssjg                               std::allocator<wchar_t> > > > );
101246149Ssjg
102246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<wchar_t*> );
103246149Ssjg
104246149Ssjg  _Instantiate(_RandomAccessIteratorConcept<wchar_t const*> );
105246149Ssjg#endif
106246149Ssjg
107246149Ssjg_GLIBCXX_END_NAMESPACE_VERSION
108246149Ssjg} // namespace
109246149Ssjg
110246149Ssjg#undef _Instantiate
111246149Ssjg
112246149Ssjg#endif
113246149Ssjg