The allocator is a singleton, so no need to pass it in to the constructor
Non-singleton allocator, must be passed in
If the allocator isn't a singleton, assigning to the raw type is unsafe. If RefCounted was default-contructed then there is no allocator