1// std::initializer_list support -*- C++ -*- 2 3// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. 4// 5// This file is part of GCC. 6// 7// GCC 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 3, or (at your option) 10// any later version. 11// 12// GCC 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// Under Section 7 of GPL version 3, you are granted additional 18// permissions described in the GCC Runtime Library Exception, version 19// 3.1, as published by the Free Software Foundation. 20 21// You should have received a copy of the GNU General Public License and 22// a copy of the GCC Runtime Library Exception along with this program; 23// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24// <http://www.gnu.org/licenses/>. 25 26/** @file initializer_list 27 * This is a Standard C++ Library header. 28 */ 29 30#ifndef _INITIALIZER_LIST 31#define _INITIALIZER_LIST 32 33#pragma GCC system_header 34 35#ifdef __GXX_EXPERIMENTAL_CXX0X__ 36 37#pragma GCC visibility push(default) 38 39#include <cstddef> 40 41namespace std 42{ 43 /// initializer_list 44 template<class _E> 45 class initializer_list 46 { 47 public: 48 typedef _E value_type; 49 typedef const _E& reference; 50 typedef const _E& const_reference; 51 typedef size_t size_type; 52 typedef const _E* iterator; 53 typedef const _E* const_iterator; 54 55 private: 56 iterator _M_array; 57 size_type _M_len; 58 59 // The compiler can call a private constructor. 60 initializer_list(const_iterator __a, size_type __l) 61 : _M_array(__a), _M_len(__l) { } 62 63 public: 64 initializer_list() : _M_array(NULL), _M_len(0) { } 65 66 // Number of elements. 67 size_type 68 size() const { return _M_len; } 69 70 // First element. 71 const_iterator 72 begin() const { return _M_array; } 73 74 // One past the last element. 75 const_iterator 76 end() const { return begin() + size(); } 77 }; 78} 79 80#pragma GCC visibility pop 81#endif // C++0x 82#endif // _INITIALIZER_LIST 83