bad_apple_os/bastl/include/initializer_list

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)