core::RefCounted implements base class for reference countable objects. It is very widely used in the code base.
To reduce code size and compilation times, it would be great to move its methods to a non-template implementation class (everything except destroy() call in decref() because it depends on template parameters). All existing code will continue using RefCounted, however its methods will mostly just invoke similar methods of RefCountedImpl. This way, the template part will be small, and non-template part will be compiled once and reused.
core::RefCounted implements base class for reference countable objects. It is very widely used in the code base.
To reduce code size and compilation times, it would be great to move its methods to a non-template implementation class (everything except destroy() call in decref() because it depends on template parameters). All existing code will continue using RefCounted, however its methods will mostly just invoke similar methods of RefCountedImpl. This way, the template part will be small, and non-template part will be compiled once and reused.
We use the same approach with core::Pool and core::PoolImpl.