I'm trying to implement boost::any like class:
struct any { private: struct holderBase { virtual ~holderBase(){} }; template<typename T> struct holder : public holderBase { T content; holder(const T& value) : content(value){} holder(const holder<T>& other) : content(other.content){} }; holderBase *hl; public: template<typename T> any(const T& data = T()) { hl = new holder<T>(data); } any(const any& other) { hl = other.hl; } template<typename T> T get() { if(holder<T>* p_hl = dynamic_cast<holder<T>*>(hl)) return p_hl->content; else throw std::runtime_error("std::runtime_error"); } }; I use a holder class (inherited by holderBase) to store the data. How can I modify the any::get() function (or even modify the whole code) so that it doesn't need a template parameter (the get() function)?