13e519524SHoward Hinnant// -*- C++ -*- 2eb8650a7SLouis Dionne//===----------------------------------------------------------------------===// 33e519524SHoward Hinnant// 457b08b09SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 557b08b09SChandler Carruth// See https://llvm.org/LICENSE.txt for license information. 657b08b09SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 73e519524SHoward Hinnant// 83e519524SHoward Hinnant//===----------------------------------------------------------------------===// 93e519524SHoward Hinnant 103e519524SHoward Hinnant#ifndef _LIBCPP_INITIALIZER_LIST 113e519524SHoward Hinnant#define _LIBCPP_INITIALIZER_LIST 123e519524SHoward Hinnant 133e519524SHoward Hinnant/* 143e519524SHoward Hinnant initializer_list synopsis 153e519524SHoward Hinnant 163e519524SHoward Hinnantnamespace std 173e519524SHoward Hinnant{ 183e519524SHoward Hinnant 193e519524SHoward Hinnanttemplate<class E> 203e519524SHoward Hinnantclass initializer_list 213e519524SHoward Hinnant{ 223e519524SHoward Hinnantpublic: 233e519524SHoward Hinnant typedef E value_type; 243e519524SHoward Hinnant typedef const E& reference; 253e519524SHoward Hinnant typedef const E& const_reference; 263e519524SHoward Hinnant typedef size_t size_type; 273e519524SHoward Hinnant 283e519524SHoward Hinnant typedef const E* iterator; 293e519524SHoward Hinnant typedef const E* const_iterator; 303e519524SHoward Hinnant 3193288117SHoward Hinnant initializer_list() noexcept; // constexpr in C++14 323e519524SHoward Hinnant 3393288117SHoward Hinnant size_t size() const noexcept; // constexpr in C++14 3493288117SHoward Hinnant const E* begin() const noexcept; // constexpr in C++14 3593288117SHoward Hinnant const E* end() const noexcept; // constexpr in C++14 363e519524SHoward Hinnant}; 373e519524SHoward Hinnant 3893288117SHoward Hinnanttemplate<class E> const E* begin(initializer_list<E> il) noexcept; // constexpr in C++14 3993288117SHoward Hinnanttemplate<class E> const E* end(initializer_list<E> il) noexcept; // constexpr in C++14 409d4a2861SHoward Hinnant 413e519524SHoward Hinnant} // std 423e519524SHoward Hinnant 433e519524SHoward Hinnant*/ 443e519524SHoward Hinnant 453e519524SHoward Hinnant#include <__config> 463e519524SHoward Hinnant#include <cstddef> 473e519524SHoward Hinnant 48073458b1SHoward Hinnant#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 493e519524SHoward Hinnant#pragma GCC system_header 50073458b1SHoward Hinnant#endif 513e519524SHoward Hinnant 523e519524SHoward Hinnantnamespace std // purposefully not versioned 533e519524SHoward Hinnant{ 543e519524SHoward Hinnant 5594b2bde6SEric Fiselier#ifndef _LIBCPP_CXX03_LANG 5654976f26SHoward Hinnant 57c003db1fSHoward Hinnanttemplate<class _Ep> 58e2f2d1edSEric Fiselierclass _LIBCPP_TEMPLATE_VIS initializer_list 593e519524SHoward Hinnant{ 60c003db1fSHoward Hinnant const _Ep* __begin_; 613e519524SHoward Hinnant size_t __size_; 623e519524SHoward Hinnant 63dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 6493288117SHoward Hinnant _LIBCPP_CONSTEXPR_AFTER_CXX11 65c003db1fSHoward Hinnant initializer_list(const _Ep* __b, size_t __s) _NOEXCEPT 663e519524SHoward Hinnant : __begin_(__b), 673e519524SHoward Hinnant __size_(__s) 683e519524SHoward Hinnant {} 693e519524SHoward Hinnantpublic: 70c003db1fSHoward Hinnant typedef _Ep value_type; 71c003db1fSHoward Hinnant typedef const _Ep& reference; 72c003db1fSHoward Hinnant typedef const _Ep& const_reference; 733e519524SHoward Hinnant typedef size_t size_type; 743e519524SHoward Hinnant 75c003db1fSHoward Hinnant typedef const _Ep* iterator; 76c003db1fSHoward Hinnant typedef const _Ep* const_iterator; 773e519524SHoward Hinnant 78dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 7993288117SHoward Hinnant _LIBCPP_CONSTEXPR_AFTER_CXX11 8093288117SHoward Hinnant initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {} 813e519524SHoward Hinnant 82dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 8393288117SHoward Hinnant _LIBCPP_CONSTEXPR_AFTER_CXX11 8493288117SHoward Hinnant size_t size() const _NOEXCEPT {return __size_;} 8593288117SHoward Hinnant 86dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 8793288117SHoward Hinnant _LIBCPP_CONSTEXPR_AFTER_CXX11 8893288117SHoward Hinnant const _Ep* begin() const _NOEXCEPT {return __begin_;} 8993288117SHoward Hinnant 90dc7200b4SLouis Dionne _LIBCPP_INLINE_VISIBILITY 9193288117SHoward Hinnant _LIBCPP_CONSTEXPR_AFTER_CXX11 9293288117SHoward Hinnant const _Ep* end() const _NOEXCEPT {return __begin_ + __size_;} 933e519524SHoward Hinnant}; 943e519524SHoward Hinnant 95c003db1fSHoward Hinnanttemplate<class _Ep> 969d4a2861SHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY 9793288117SHoward Hinnant_LIBCPP_CONSTEXPR_AFTER_CXX11 98c003db1fSHoward Hinnantconst _Ep* 99c003db1fSHoward Hinnantbegin(initializer_list<_Ep> __il) _NOEXCEPT 1009d4a2861SHoward Hinnant{ 1019d4a2861SHoward Hinnant return __il.begin(); 1029d4a2861SHoward Hinnant} 1039d4a2861SHoward Hinnant 104c003db1fSHoward Hinnanttemplate<class _Ep> 1059d4a2861SHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY 10693288117SHoward Hinnant_LIBCPP_CONSTEXPR_AFTER_CXX11 107c003db1fSHoward Hinnantconst _Ep* 108c003db1fSHoward Hinnantend(initializer_list<_Ep> __il) _NOEXCEPT 1099d4a2861SHoward Hinnant{ 1109d4a2861SHoward Hinnant return __il.end(); 1119d4a2861SHoward Hinnant} 1129d4a2861SHoward Hinnant 11394b2bde6SEric Fiselier#endif // !defined(_LIBCPP_CXX03_LANG) 11454976f26SHoward Hinnant 115*d2b0df35SNikolas Klauser} // namespace std 1163e519524SHoward Hinnant 1173e519524SHoward Hinnant#endif // _LIBCPP_INITIALIZER_LIST 118