38 #ifndef BLOCXX_COWREFERENCE_HPP_INCLUDE_GUARD_
39 #define BLOCXX_COWREFERENCE_HPP_INCLUDE_GUARD_
40 #include "blocxx/BLOCXX_config.h"
45 namespace BLOCXX_NAMESPACE
148 COWReference<U>
cast_to() const;
153 #if !defined(__GNUC__) || __GNUC__ > 2 // causes gcc 2.95 to ICE
155 template <
class U>
friend class COWReference;
204 typedef char type_must_be_complete[
sizeof(T)];
257 #ifdef BLOCXX_CHECK_NULL_REFERENCES
258 ReferenceHelpers::checkNull(
this);
259 ReferenceHelpers::checkNull(m_pObj);
269 #ifdef BLOCXX_CHECK_NULL_REFERENCES
270 ReferenceHelpers::checkNull(
this);
271 ReferenceHelpers::checkNull(m_pObj);
281 #ifdef BLOCXX_CHECK_NULL_REFERENCES
282 ReferenceHelpers::checkNull(
this);
283 ReferenceHelpers::checkNull(m_pObj);
292 #ifdef BLOCXX_CHECK_NULL_REFERENCES
293 ReferenceHelpers::checkNull(
this);
294 ReferenceHelpers::checkNull(m_pObj);
309 return (m_pObj == 0);
318 rval.
m_pObj =
dynamic_cast<U*
>(m_pObj);
335 template <
class T,
class U>
341 template <
class T,
class U>
347 template <
class T,
class U>
350 return a.
getPtr() < b.getPtr();
364 #endif // BLOCXX_COWREFERENCE_HPP_