
I am attempting to create a library with a generic interface run-time interface and have need for something like boost::any; however, boost::any requires heap allocation. boost::variant is not acceptable either because I do not know the full set of types in advance. Has anyone seen the equivalent of a type-checked void* or const void*? Effectively I would like to create a polymorphic method like this: void myclass::method( const_any_ref p1, const_any_ref p2, const any_ref p3 ) { const uint16_t& _p1 = p1; const double& _p2 = p2; const std::string& _p3 = p3; //If any of the types do not match it should throw an exception. alternatively the follow syntax may work if you want to avoid exceptions? boost::optional<const uint16_t&> _p1 = p1; if( !_p1 ) // cast failed? } Anyone have any nifty ideas on how to accomplish this without RTTI and no heap allocation? In place of RTTI I do have a "manual" RTTI system that I could use. get_typename<T>::str will return a unique const char* pointer. I am guessing the best I can hope for is a pair of pointers, one "void*" and one const char*. I am going to write such a class unless someone here knows of an existing solution. Dan