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