So, now that we have selected to use the value model for CacheFactory::create()/Cache, we need to look at what the methods on Cache return.
Starting with Cache::createRegionFactory method which returns std::shared_ptr<RegionFactory>. I think it is very clear that this should be a value type. RegionFactory Cache::createRegionFactory(...) const; Looking then at Cache::getRegion things are more interesting. It currently returns std::shared_ptr<Region>. Internally we keep a set of these shared_ptrs in a map. Does it make sense to keep returning these shared_ptrs or should we again switch to a value model? It would be great for consistency on the public API to go the value model way even if initially the value simply holds a shared_ptr to the internal region impl. Thoughts?