// pref.hpp - p_ref, a pointer reference // // Copyright (C)2004, David Turner // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // #ifndef INC_PREF_HPP #define INC_PREF_HPP #include template class p_ref { T* object_; public: explicit p_ref(T& object): object_(&object) // perhaps boost::addressof { } p_ref(): object_() { } T& get() const { if (object_) return *object_; throw std::logic_error("Null reference"); } T* get_pointer() const { return object_; } operator T& () const { return get(); } }; template p_ref make_p_ref(T& object) { return p_ref(object); } #endif // INC_PREF_HPP