Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef CODE_HPP
- #define CODE_HPP
- #include <array>
- #include <vector>
- using std::vector;
- using std::array;
- template<typename T, typename C = vector<T>>
- class stack;
- template<typename T, typename C = vector<T>, typename K = stack<T,C>>
- class stack_array;
- template<typename T, typename C>
- class stack
- {
- C pile;
- stack();
- ~stack();
- void push(T&);
- friend class stack_array<T,C,stack<T,C>>;
- };
- template<typename T, typename C, typename K>
- class stack_array
- {
- private:
- static const size_t max_elem = 10;
- array<K, max_elem> store{};
- size_t index;
- public:
- stack_array(T&);
- ~stack_array();
- };
- template<typename T, typename C> stack<T,C>::stack(){
- pile.clear();
- }
- template<typename T, typename C> stack<T,C>::~stack(){
- }
- template<typename T, typename C> void stack<T,C>::push(T& _data){
- pile.push_back(_data);
- return;
- }
- template<typename T, typename C, typename K> stack_array<T,C,K>::stack_array(T& _data){
- index = 0;
- store[index].push(_data);
- }
- template<typename T, typename C, typename K> stack_array<T,C,K>::~stack_array(){
- }
- #endif
- #include "code.hpp"
- #include <iostream>
- using std::cout;
- int main (void){
- auto i = 0;
- stack_array<decltype(i)> s_a(i);
- return 0;
- }
- g++ -ggdb -std=c++17 -Wall main.cpp code.hpp
- In file included from main.cpp:1:0:
- code.hpp: In instantiation of ‘stack_array<T, C, K>::stack_array(T&) [with T = int; C = std::vector<int, std::allocator<int> >; K = stack<int, std::vector<int, std::allocator<int> > >]’:
- main.cpp:8:35: required from here
- code.hpp:52:86: error: use of deleted function ‘std::array<stack<int, std::vector<int, std::allocator<int> > >, 10>::~array()’
- template<typename T, typename C, typename K> stack_array<T,C,K>::stack_array(T& _data){
- ^
- In file included from code.hpp:3:0,
- from main.cpp:1:
- /usr/lib/gcc/x86_64-pc-cygwin/7.4.0/include/c++/array:94:12: note: ‘std::array<stack<int, std::vector<int, std::allocator<int> > >, 10>::~array()’ is implicitly deleted because the default definition would be ill-formed:
- struct array
- ^~~~~
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement