diff --git a/iterators_task_2/student/include/impl.h b/iterators_task_2/student/include/impl.h index dabebd5b..aabbd6c1 100644 --- a/iterators_task_2/student/include/impl.h +++ b/iterators_task_2/student/include/impl.h @@ -5,11 +5,36 @@ template struct accumulator { /** @todo Iterator traits*/ + using iterator_category = typename std::output_iterator_tag; + using difference_type = void; + using pointer = void; + using reference = void; + using value_type = void; + /** @todo Constructor with container*/ + accumulator(Container& container) : container{ container } {} + /** @todo lvalue writing operator*/ + template + accumulator& operator=(const T& value) { + container.insert(container.end(), value.begin(), value.end()); + return *this; + } + /** @todo rvalue writing operator*/ + template + accumulator& operator=(T&& value) { + std::move(value.begin(), value.end(), std::back_inserter(container)); + return *this; + } /** @todo Iterator operations */ + accumulator& operator*() { return *this; } + accumulator& operator++() { return *this; } + accumulator& operator--() { return *this; } + +private: + Container& container; }; /** @@ -18,4 +43,5 @@ struct accumulator template accumulator make_accumulator(Container& container) { + return accumulator(container); }