36 #ifndef VIGRA_MEMORY_HXX
37 #define VIGRA_MEMORY_HXX
39 #include "metaprogramming.hxx"
43 enum SkipInitializationTag { SkipInitialization};
46 struct CanSkipInitialization
48 typedef typename TypeTraits<T>::isBuiltinType type;
49 static const bool value = type::asBool;
55 inline void destroy_n(T * , std::ptrdiff_t , VigraTrueType )
60 inline void destroy_n(T * p, std::ptrdiff_t n, VigraFalseType )
68 inline void destroy_n(T * p, std::ptrdiff_t n)
70 destroy_n(p, n,
typename TypeTraits<T>::isPOD());
76 #if !defined(__GNUC__) || __GNUC__ >= 3
79 inline void destroy(T * p, VigraTrueType )
84 inline void destroy(T * p, VigraFalseType )
90 inline void destroy(T * p)
92 destroy(p,
typename TypeTraits<T>::isPOD());
101 namespace vigra {
namespace detail {
109 #endif // VIGRA_MEMORY_HXX