git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@132129 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// -*- C++ -*-
 | 
						|
//===----------------------- initializer_list -----------------------------===//
 | 
						|
//
 | 
						|
//                     The LLVM Compiler Infrastructure
 | 
						|
//
 | 
						|
// This file is dual licensed under the MIT and the University of Illinois Open
 | 
						|
// Source Licenses. See LICENSE.TXT for details.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#ifndef _LIBCPP_INITIALIZER_LIST
 | 
						|
#define _LIBCPP_INITIALIZER_LIST
 | 
						|
 | 
						|
/*
 | 
						|
    initializer_list synopsis
 | 
						|
 | 
						|
namespace std
 | 
						|
{
 | 
						|
 | 
						|
template<class E>
 | 
						|
class initializer_list
 | 
						|
{
 | 
						|
public:
 | 
						|
    typedef E        value_type;
 | 
						|
    typedef const E& reference;
 | 
						|
    typedef const E& const_reference;
 | 
						|
    typedef size_t   size_type;
 | 
						|
 | 
						|
    typedef const E* iterator;
 | 
						|
    typedef const E* const_iterator;
 | 
						|
 | 
						|
    initializer_list() noexcept;
 | 
						|
 | 
						|
    size_t   size()  const noexcept;
 | 
						|
    const E* begin() const noexcept;
 | 
						|
    const E* end()   const noexcept;
 | 
						|
};
 | 
						|
 | 
						|
template<class E> const E* begin(initializer_list<E> il) noexcept;
 | 
						|
template<class E> const E* end(initializer_list<E> il) noexcept;
 | 
						|
 | 
						|
}  // std
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
#include <__config>
 | 
						|
#include <cstddef>
 | 
						|
 | 
						|
#pragma GCC system_header
 | 
						|
 | 
						|
namespace std  // purposefully not versioned
 | 
						|
{
 | 
						|
 | 
						|
template<class _E>
 | 
						|
class _LIBCPP_VISIBLE initializer_list
 | 
						|
{
 | 
						|
    const _E* __begin_;
 | 
						|
    size_t    __size_;
 | 
						|
 | 
						|
    _LIBCPP_ALWAYS_INLINE
 | 
						|
    initializer_list(const _E* __b, size_t __s) _NOEXCEPT
 | 
						|
        : __begin_(__b),
 | 
						|
          __size_(__s)
 | 
						|
        {}
 | 
						|
public:
 | 
						|
    typedef _E        value_type;
 | 
						|
    typedef const _E& reference;
 | 
						|
    typedef const _E& const_reference;
 | 
						|
    typedef size_t    size_type;
 | 
						|
 | 
						|
    typedef const _E* iterator;
 | 
						|
    typedef const _E* const_iterator;
 | 
						|
 | 
						|
    _LIBCPP_ALWAYS_INLINE initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {}
 | 
						|
 | 
						|
    _LIBCPP_ALWAYS_INLINE size_t    size()  const _NOEXCEPT {return __size_;}
 | 
						|
    _LIBCPP_ALWAYS_INLINE const _E* begin() const _NOEXCEPT {return __begin_;}
 | 
						|
    _LIBCPP_ALWAYS_INLINE const _E* end()   const _NOEXCEPT {return __begin_ + __size_;}
 | 
						|
};
 | 
						|
 | 
						|
template<class _E>
 | 
						|
inline _LIBCPP_INLINE_VISIBILITY
 | 
						|
const _E*
 | 
						|
begin(initializer_list<_E> __il) _NOEXCEPT
 | 
						|
{
 | 
						|
    return __il.begin();
 | 
						|
}
 | 
						|
 | 
						|
template<class _E>
 | 
						|
inline _LIBCPP_INLINE_VISIBILITY
 | 
						|
const _E*
 | 
						|
end(initializer_list<_E> __il) _NOEXCEPT
 | 
						|
{
 | 
						|
    return __il.end();
 | 
						|
}
 | 
						|
 | 
						|
}  // std
 | 
						|
 | 
						|
#endif  // _LIBCPP_INITIALIZER_LIST
 |