#pragma once #if !defined(BAD_APPLE_OS_INITIALIZER_LIST_INCLUDED) #define BAD_APPLE_OS_INITIALIZER_LIST_INCLUDED #include namespace std { template class initializer_list { public: using value_type = T; using reference = const value_type&; using const_reference = const value_type&; using iterator = const value_type*; using const_iterator = const value_type*; private: const T* _begin = nullptr; std::size_t _size = 0; constexpr initializer_list(T* begin, std::size_t size) noexcept : _begin(begin), _size(size) {} public: constexpr initializer_list() noexcept = default; [[nodiscard]] std::size_t size() const noexcept { return _size; } [[nodiscard]] iterator begin() const noexcept { return _begin; } [[nodiscard]] iterator end() const noexcept { return _begin + _size; } }; template const T* begin(initializer_list initList) noexcept { return initList.begin(); } template const T* end(initializer_list initList) noexcept { return initList.end(); } } #endif // !defined(BAD_APPLE_OS_INITIALIZER_LIST_INCLUDED)