在 Boost 1.5.1 源代码下smart_ptr\detail\atomic_count_win32.hpp
是一个整洁的小原子引用计数器boost::detail::atomic_count
。
在第 48 行,他们做了一个我很好奇的演员表:
class atomic_count
{
public:
// ...
operator long() const
{
return static_cast<long const volatile &>( value_ );
}
private:
long value_;
为什么将计数器值转换为 a-reference-to-a-volatile-constant-long ( long const volatile&
)?