#pragma once
#include <string>
#include "example.hpp"
#include <iostream>
namespace MyLibrary {
template<typename TemplatedClass>
class SubclassExample : public Example {
public:
int virtualfunc() override;
template <typename T>
std::shared_ptr<std::string> function_template_test(std::shared_ptr<T>& param);
template <typename T, typename Foo, typename Bar, typename Alice, typename Bob, typename Charlie, typename Hello, typename World>
std::pair<std::string, std::string> long_function_with_many_parameters(std::shared_ptr<T>& param1, std::shared_ptr<std::string>& param2, bool parameter3, Alice paramater4 Bob parameter 5) {
if(true) {
std::cout << "this even has some code." << std::endl;
}
}
};
}