Вам нужно реализовать intrusive_ptr и intrusive_ref_counter, а также некоторые вспомогательные утилиты (операторы, API счётчика).
Обратите внимание, что intrusive_ref_counter
должен иметь единственную политику потокобезопасности,
аналогичную (и не уступающую в эффективности) boost::thread_safe_counter
.
Будьте готовы ответить на вопросы о выбранном memory_order
.