17 #ifndef VCSN_MISC_DEFERRER_HXX
18 # define VCSN_MISC_DEFERRER_HXX
49 template <
class T,
bool B>
53 memset (ptr, 0,
sizeof (T));
56 template <
class T,
bool B>
61 WARNING (
"Modifying a valid Deferrer<T, true>.");
65 template <
class T,
bool B>
67 DeferrerDebugPart<T, B>::cast (
void *ptr)
69 precondition (is_valid_);
70 return *
reinterpret_cast<T*
> (ptr);
73 template <
class T,
bool B>
75 DeferrerDebugPart<T, B>::cast (
const void *ptr)
const
77 precondition (is_valid_);
78 return *
reinterpret_cast<const T*
> (ptr);
92 DeferrerDebugPart<T, false>::set_valid (
bool)
98 DeferrerDebugPart<T, false>::cast (
void *ptr)
100 return *
reinterpret_cast<T*
> (ptr);
105 DeferrerDebugPart<T, false>::cast (
const void *ptr)
const
107 return *
reinterpret_cast<const T*
> (ptr);
114 template <
class T,
bool rt_checks>
119 template <
class T,
bool rt_checks>
123 new (data) deferred_type (rhs);
124 this->set_valid (
true);
128 template <
class T,
bool rt_checks>
131 return this->cast (data);
138 #endif // ! VCSN_MISC_DEFERRER_HXX