#include <iostream>
namespace fsx
{
template <typename T, size_t SIZE>
class array;
template <class T, typename value_type = typename std::remove_pointer<T>::type::value_type>
class iterator
{
private:
size_t m_index;
T m_container;
public:
iterator(size_t index, T container) :
m_index{index},
m_container{container}
{}
operator value_type*()
{
return &(*this->m_container)[m_index];
}
template <typename U>
operator U() = delete;
};
template <typename T, size_t SIZE>
class array
{
private:
T m_array[SIZE];
public:
using value_type = T;
array() = default;
T& operator[](const size_t& index)
{
return this->m_array[index];
}
iterator<fsx::array<T, SIZE>*> begin()
{
return fsx::iterator<decltype(this)>(0, this);
}
iterator<fsx::array<T, SIZE>*> end()
{
return fsx::iterator<decltype(this)>(SIZE - 1, this);
}
};
}
int main()
{
fsx::array<int, 2> arr;
arr[0] = 100;
arr[1] = 101;
int* ptr = arr.begin();
std::cerr << *ptr << ", " << *(ptr+1) << std::endl;
}
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106