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)
 |