43#ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_SCOPED_PTR_H
44#define LASS_GUARDIAN_OF_INCLUSION_UTIL_SCOPED_PTR_H
50#if LASS_COMPILER_TYPE == LASS_COMPILER_TYPE_MSVC
52# pragma warning(disable: 4996)
54# pragma GCC diagnostic push
55# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
66 template <
typename,
typename>
class StoragePolicy =
ObjectStorage
68class LASS_DEPRECATED(
"use std::unique_ptr instead") ScopedPtr:
public StoragePolicy<T, NonCopyable>
73 typedef StoragePolicy<T, NonCopyable> TStoragePolicy;
74 typedef typename TStoragePolicy::TStorage TStorage;
75 typedef typename TStoragePolicy::TPointer TPointer;
76 typedef typename TStoragePolicy::TReference TReference;
78 template <
typename U>
struct Rebind
80 typedef ScopedPtr<U, StoragePolicy> Type;
87 explicit ScopedPtr(TPointer p):
93 TStoragePolicy::dispose();
96 void reset(TPointer p = 0)
102 template <
typename U> ScopedPtr(std::unique_ptr<U> p):
103 TStoragePolicy(p.get())
107 template <
typename U>
void reset(std::unique_ptr<U> p)
109 ScopedPtr temp(std::move(p));
113 void swap(ScopedPtr& other)
115 TStoragePolicy::swap(other);
120 return TStoragePolicy::pointer();
122 TPointer operator->()
const
127 TReference operator*()
const
132 TReference operator[](
size_t i)
const
135 return TStoragePolicy::at(i);
140 return TStoragePolicy::isNull();
142 bool operator!()
const
146 explicit operator bool()
const
152 const TStorage& storage()
const
154 return TStoragePolicy::storage();
159 return TStoragePolicy::storage();
163#if LASS_COMPILER_TYPE == LASS_COMPILER_TYPE_MSVC
166# pragma GCC diagnostic pop
Default storage policy for single objects, implementation of StoragePolicy concept.
general utility, debug facilities, ...
Library for Assembled Shared Sources.