First version of std::array
This commit is contained in:
parent
b8f59710d3
commit
8526ae1d91
71
const_fmt/std_lib.h
Normal file
71
const_fmt/std_lib.h
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
#ifndef CONST_FMT_STD_LIB_H
|
||||||
|
#define CONST_FMT_STD_LIB_H
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONST_FMT_NO_STD_LIB
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
|
||||||
|
|
||||||
|
using size_t = uint16_t;
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: Is std::size_t really the best bet here?
|
||||||
|
template <typename data_t, std::size_t t_size>
|
||||||
|
class array {
|
||||||
|
public:
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
array() = default;
|
||||||
|
array(const array& other) = default;
|
||||||
|
array(array&& other) = default;
|
||||||
|
|
||||||
|
// Operators
|
||||||
|
|
||||||
|
array operator=(const array& other) = default;
|
||||||
|
array operator=(array&& other) = default;
|
||||||
|
|
||||||
|
// Element access
|
||||||
|
|
||||||
|
data_t& operator[](std::size_t index) {
|
||||||
|
return m_data[index];
|
||||||
|
}
|
||||||
|
const data_t& operator[](std::size_t index) const {
|
||||||
|
return m_data[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iterators
|
||||||
|
|
||||||
|
using iterator = data_t*;
|
||||||
|
using const_iterator = const data_t*;
|
||||||
|
|
||||||
|
iterator begin() {
|
||||||
|
return &(m_data[0]);
|
||||||
|
}
|
||||||
|
iterator end() {
|
||||||
|
return (&(m_data[t_size-1]) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const iterator cbegin() const {
|
||||||
|
return &(m_data[0]);
|
||||||
|
}
|
||||||
|
const iterator cend() const {
|
||||||
|
return (&(m_data[t_size-1]) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
data_t m_data[t_size];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace std
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif // CONST_FMT_STD_LIB_H
|
||||||
Loading…
Reference in New Issue
Block a user