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