1// Copyright 2020 The Pigweed Authors 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); you may not 4// use this file except in compliance with the License. You may obtain a copy of 5// the License at 6// 7// https://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12// License for the specific language governing permissions and limitations under 13// the License. 14#pragma once 15 16#include "pw_polyfill/standard_library/namespace.h" 17 18_PW_POLYFILL_BEGIN_NAMESPACE_STD 19 20template <typename T> 21class initializer_list { 22 public: 23 using value_type = T; 24 using reference = const T&; 25 using const_reference = const T&; 26 using size_type = decltype(sizeof(0)); 27 using iterator = const T*; 28 using const_iterator = const T*; 29 30 constexpr initializer_list() : begin_(nullptr), size_(0) {} 31 32 size_type size() const { return size_; } 33 34 iterator begin() const { return begin_; } 35 iterator end() const { return begin_ + size_; } 36 37 private: 38 // The order of these members must stay the same. The compiler makes 39 // assumptions about this class, and reordering these breaks things. 40 const T* begin_; 41 size_type size_; 42}; 43 44_PW_POLYFILL_END_NAMESPACE_STD 45