c++ - Caching mechanism with any type -


i trying devise caching mechanism project. basically, need map string value, however, need value open , determined @ runtime.

what need advice how implement this.

my design this:

  • use boost::any hold value
  • use std::unordered_map<std::string, boost::any> container

i'd member give original type, want cache as transparent possible. users should use this:

double      &p = cache.get("p"); std::string &q = cache.get("q"); hugeclass   &r = cache.get("r"); 

i thinking of having instead of boost::any value, private struct this:

struct internal {     boost::any value;      template <typename t>     t& get() { return boost::any_cast<t&>(value); } // possible? } 

however, don't know if possible, or how this.

so, how can transparent caching class returns references held value?

thanks!

you away this:

double      &p = cache.get<double>("p"); std::string &q = cache.get<std::string>("q"); hugeclass   &r = cache.get<hugeclass>("r"); 

otherwise, don't think asking possible.


update: try design tho:

double p; cache.get("p", p); 

with get this:

template <typename t> bool get(const std::string &key, t &output) const {     // lookup...     // return false if lookup failed     output = boost::any_cast<t&>(...);     return true; } 

Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -