libcxx initial import
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@103490 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/initializer_list b/include/initializer_list
new file mode 100644
index 0000000..d780be9
--- /dev/null
+++ b/include/initializer_list
@@ -0,0 +1,80 @@
+// -*- C++ -*-
+//===----------------------- initializer_list -----------------------------===//
+//
+// ÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. 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();
+
+ size_t size() const;
+ const E* begin() const;
+ const E* end() const;
+};
+
+} // std
+
+*/
+
+#include <__config>
+#include <cstddef>
+
+#pragma GCC system_header
+
+namespace std // purposefully not versioned
+{
+
+template<class _E>
+class initializer_list
+{
+ const _E* __begin_;
+ size_t __size_;
+
+ _LIBCPP_ALWAYS_INLINE
+ initializer_list(const _E* __b, size_t __s)
+ : __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() : __begin_(nullptr), __size_(0) {}
+
+ _LIBCPP_ALWAYS_INLINE size_t size() const {return __size_;}
+ _LIBCPP_ALWAYS_INLINE const _E* begin() const {return __begin_;}
+ _LIBCPP_ALWAYS_INLINE const _E* end() const {return __begin_ + __size_;}
+};
+
+} // std
+
+#endif // _LIBCPP_INITIALIZER_LIST