45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #if !defined(BAD_APPLE_OS_INITIALIZER_LIST_INCLUDED)
 | |
| #define BAD_APPLE_OS_INITIALIZER_LIST_INCLUDED
 | |
| 
 | |
| #include <cstddef>
 | |
| 
 | |
| namespace std
 | |
| {
 | |
| template<typename T>
 | |
| 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<typename T>
 | |
| const T* begin(initializer_list<T> initList) noexcept
 | |
| {
 | |
|     return initList.begin();
 | |
| }
 | |
| 
 | |
| template<typename T>
 | |
| const T* end(initializer_list<T> initList) noexcept
 | |
| {
 | |
|     return initList.end();
 | |
| }
 | |
| }
 | |
| 
 | |
| #endif // !defined(BAD_APPLE_OS_INITIALIZER_LIST_INCLUDED)
 |