Library/Patterns/Cache


 * Create cache on first use - usually make this transparent to the caller whether the cache is being created, recreated, or simply returned
 * Acquire/Release paradigm to track last use
 * Automatically release orphaned caches (i.e. each cache has an implicit owner or a ref count)
 * Sweep occasionally to release orphaned or not often used resources
 * weak_ptrs