能够通过模板参数指定Lock_Policy

  1. class sp_counted_Base{}

    • use_count => 当减为0析构资源 dispose
    • weak_count => 当减为0 delete this; destroy开释管制区域

      二者皆为原子变量,原子操作扭转值,同时应用内存屏障确保可见性 dispose肯定要能被调用destroy的线程察看到

  2. class sp_counted_Ptr{} 继承了 sp_counted_Base
  3. class sp_counted_deleter{} 继承了sp_counted_Base,存储了Deleter_,应用std::addressof 1获取地址

    十分乏味,当面对模板时,传入的类型的& operator可能被重载,并非取地址的含意,因而应用这个补救。


  1. why use std::addressof versus &: https://stackoverflow.com/que... ↩