#include <iostream>
#include <vector>
#include <memory>
namespace myproject {
template<typename T>
class Container {
public:
Container() = default;
~Container() = default;
void add(T item) {
items.push_back(std::move(item));
}
T& get(size_t index) {
return items[index];
}
size_t size() const {
return items.size();
}
private:
std::vector<T> items;
};
class Base {
public:
virtual ~Base() = default;
virtual void process() = 0;
};
class Derived : public Base {
public:
void process() override {
std::cout << "Processing" << std::endl;
}
};
void helper(int x) {
std::cout << x << std::endl;
}
int main() {
Container<int> container;
container.add(1);
container.add(2);
auto derived = std::make_unique<Derived>();
derived->process();
helper(container.size());
return 0;
}
}