Если тот, кто использует параметр после get, знает тип параметра, то вы можете использовать c ++ 17 std::any
, или если вам нужно использовать c ++ 11, вы можете попробовать boost::any
, или еслини один из тех, к которым вы можете прибегнуть к void*
.
Разница в том, что void * не прервется при приведении к неверному типу, где any_cast
выдаст исключение или вернет nullptr, если используетсяс указателем.Вам также необходимо использовать пользовательский удалитель в std :: shared_ptr, чтобы иметь возможность освободить пустоту *.