mirror of
https://github.com/boostorg/smart_ptr.git
synced 2025-07-30 12:47:28 +02:00
Use BOOST_NO_CXX11_RVALUE_REFERENCES and BOOST_NO_CXX11_VARIADIC_TEMPLATES instead of the legacy macros. Rename identifiers of detail utility functions.
[SVN r81886]
This commit is contained in:
@ -33,10 +33,10 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2);
|
d2->init(p2);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
template<typename T, typename A, typename... Args>
|
template<typename T, typename A, typename... Args>
|
||||||
inline typename boost::detail::sp_if_array<T>::type
|
inline typename boost::detail::sp_if_array<T>::type
|
||||||
allocate_shared(const A& allocator, std::size_t size, Args&&... args) {
|
allocate_shared(const A& allocator, std::size_t size, Args&&... args) {
|
||||||
@ -51,7 +51,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<Args>(args)...);
|
d2->init_args(p2, boost::detail::sp_forward<Args>(args)...);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T, typename A, typename... Args>
|
template<typename T, typename A, typename... Args>
|
||||||
@ -70,30 +70,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[N]>* D2;
|
typedef boost::detail::array_deleter<T2[N]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<Args>(args)...);
|
d2->init_args(p2, boost::detail::sp_forward<Args>(args)...);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
||||||
template<typename T, typename A>
|
|
||||||
inline typename boost::detail::sp_if_array<T>::type
|
|
||||||
allocate_shared(const A& allocator,
|
|
||||||
std::initializer_list<typename boost::detail::array_inner<T>::type> list) {
|
|
||||||
typedef typename boost::detail::array_inner<T>::type T1;
|
|
||||||
typedef typename boost::detail::array_base<T1>::type T2;
|
|
||||||
typedef const T2 T3;
|
|
||||||
T1* p1 = 0;
|
|
||||||
T2* p2 = 0;
|
|
||||||
T3* p3 = 0;
|
|
||||||
std::size_t n1 = list.size() * boost::detail::array_total<T1>::size;
|
|
||||||
boost::detail::allocate_array_helper<A, T2[]> a1(allocator, n1, &p2);
|
|
||||||
boost::detail::array_deleter<T2[]> d1(n1);
|
|
||||||
boost::shared_ptr<T> s1(p1, d1, a1);
|
|
||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
|
||||||
p3 = reinterpret_cast<T3*>(list.begin());
|
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
|
||||||
d2->construct_list(p2, p3);
|
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -117,7 +94,7 @@ namespace boost {
|
|||||||
p3 = reinterpret_cast<T3*>(list);
|
p3 = reinterpret_cast<T3*>(list);
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_list(p2, p3);
|
d2->init_list(p2, p3);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T, typename A>
|
template<typename T, typename A>
|
||||||
@ -141,7 +118,7 @@ namespace boost {
|
|||||||
p3 = reinterpret_cast<T3*>(list);
|
p3 = reinterpret_cast<T3*>(list);
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_list<M>(p2, p3);
|
d2->init_list<M>(p2, p3);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T, typename A>
|
template<typename T, typename A>
|
||||||
@ -165,10 +142,33 @@ namespace boost {
|
|||||||
p3 = reinterpret_cast<T3*>(list);
|
p3 = reinterpret_cast<T3*>(list);
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_list<M>(p2, p3);
|
d2->init_list<M>(p2, p3);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
|
template<typename T, typename A>
|
||||||
|
inline typename boost::detail::sp_if_array<T>::type
|
||||||
|
allocate_shared(const A& allocator,
|
||||||
|
std::initializer_list<typename boost::detail::array_inner<T>::type> list) {
|
||||||
|
typedef typename boost::detail::array_inner<T>::type T1;
|
||||||
|
typedef typename boost::detail::array_base<T1>::type T2;
|
||||||
|
typedef const T2 T3;
|
||||||
|
T1* p1 = 0;
|
||||||
|
T2* p2 = 0;
|
||||||
|
T3* p3 = 0;
|
||||||
|
std::size_t n1 = list.size() * boost::detail::array_total<T1>::size;
|
||||||
|
boost::detail::allocate_array_helper<A, T2[]> a1(allocator, n1, &p2);
|
||||||
|
boost::detail::array_deleter<T2[]> d1(n1);
|
||||||
|
boost::shared_ptr<T> s1(p1, d1, a1);
|
||||||
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
|
p3 = reinterpret_cast<T3*>(list.begin());
|
||||||
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
|
d2->init_list(p2, p3);
|
||||||
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
template<typename T, typename A>
|
template<typename T, typename A>
|
||||||
inline typename boost::detail::sp_if_array<T>::type
|
inline typename boost::detail::sp_if_array<T>::type
|
||||||
allocate_shared(const A& allocator, std::size_t size,
|
allocate_shared(const A& allocator, std::size_t size,
|
||||||
@ -184,7 +184,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<T2>(value));
|
d2->init_value(p2, boost::detail::sp_forward<T2>(value));
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T, typename A>
|
template<typename T, typename A>
|
||||||
@ -204,7 +204,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[N]>* D2;
|
typedef boost::detail::array_deleter<T2[N]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<T2>(value));
|
d2->init_value(p2, boost::detail::sp_forward<T2>(value));
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -223,7 +223,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_noinit(p2);
|
d2->noinit(p2);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T, typename A>
|
template<typename T, typename A>
|
||||||
@ -242,7 +242,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[N]>* D2;
|
typedef boost::detail::array_deleter<T2[N]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_noinit(p2);
|
d2->noinit(p2);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,34 +28,34 @@ namespace boost {
|
|||||||
array_destroy(object, size);
|
array_destroy(object, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void construct(T* memory) {
|
void init(T* memory) {
|
||||||
array_construct(memory, size);
|
array_init(memory, size);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
void construct(T* memory, T&& value) {
|
void init_value(T* memory, T&& value) {
|
||||||
array_construct_value(memory, size, sp_forward<T>(value));
|
array_init_value(memory, size, sp_forward<T>(value));
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||||
template<typename... Args>
|
template<typename... Args>
|
||||||
void construct(T* memory, Args&&... args) {
|
void init_args(T* memory, Args&&... args) {
|
||||||
array_construct_args(memory, size, sp_forward<Args>(args)...);
|
array_init_args(memory, size, sp_forward<Args>(args)...);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
void construct_list(T* memory, const T* list) {
|
void init_list(T* memory, const T* list) {
|
||||||
array_construct_list(memory, size, list);
|
array_init_list(memory, size, list);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
template<std::size_t M>
|
template<std::size_t M>
|
||||||
void construct_list(T* memory, const T* list) {
|
void init_list(T* memory, const T* list) {
|
||||||
array_construct_list<T, M>(memory, size, list);
|
array_init_list<T, M>(memory, size, list);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
void construct_noinit(T* memory) {
|
void noinit(T* memory) {
|
||||||
array_construct_noinit(memory, size);
|
array_noinit(memory, size);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
void operator()(const void*) {
|
void operator()(const void*) {
|
||||||
@ -79,34 +79,34 @@ namespace boost {
|
|||||||
array_destroy(object, N);
|
array_destroy(object, N);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void construct(T* memory) {
|
void init(T* memory) {
|
||||||
array_construct(memory, N);
|
array_init(memory, N);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
void construct(T* memory, T&& value) {
|
void init_value(T* memory, T&& value) {
|
||||||
array_construct_value(memory, N, sp_forward<T>(value));
|
array_init_value(memory, N, sp_forward<T>(value));
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||||
template<typename... Args>
|
template<typename... Args>
|
||||||
void construct(T* memory, Args&&... args) {
|
void init_args(T* memory, Args&&... args) {
|
||||||
array_construct_args(memory, N, sp_forward<Args>(args)...);
|
array_init_args(memory, N, sp_forward<Args>(args)...);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
void construct_list(T* memory, const T* list) {
|
void init_list(T* memory, const T* list) {
|
||||||
array_construct_list(memory, N, list);
|
array_init_list(memory, N, list);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
template<std::size_t M>
|
template<std::size_t M>
|
||||||
void construct_list(T* memory, const T* list) {
|
void init_list(T* memory, const T* list) {
|
||||||
array_construct_list<T, M>(memory, N, list);
|
array_init_list<T, M>(memory, N, list);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
void construct_noinit(T* memory) {
|
void noinit(T* memory) {
|
||||||
array_construct_noinit(memory, N);
|
array_noinit(memory, N);
|
||||||
object = memory;
|
object = memory;
|
||||||
}
|
}
|
||||||
void operator()(const void*) {
|
void operator()(const void*) {
|
||||||
|
@ -30,13 +30,13 @@ namespace boost {
|
|||||||
array_destroy(memory, size, type);
|
array_destroy(memory, size, type);
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct(T* memory, std::size_t size, boost::true_type) {
|
inline void array_init(T* memory, std::size_t size, boost::true_type) {
|
||||||
for (std::size_t i = 0; i < size; i++) {
|
for (std::size_t i = 0; i < size; i++) {
|
||||||
memory[i] = T();
|
memory[i] = T();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct(T* memory, std::size_t size, boost::false_type) {
|
inline void array_init(T* memory, std::size_t size, boost::false_type) {
|
||||||
std::size_t i = 0;
|
std::size_t i = 0;
|
||||||
try {
|
try {
|
||||||
for (; i < size; i++) {
|
for (; i < size; i++) {
|
||||||
@ -49,13 +49,13 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct(T* memory, std::size_t size) {
|
inline void array_init(T* memory, std::size_t size) {
|
||||||
boost::has_trivial_default_constructor<T> type;
|
boost::has_trivial_default_constructor<T> type;
|
||||||
array_construct(memory, size, type);
|
array_init(memory, size, type);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct_value(T* memory, std::size_t size, T&& value) {
|
inline void array_init_value(T* memory, std::size_t size, T&& value) {
|
||||||
std::size_t i = 0;
|
std::size_t i = 0;
|
||||||
try {
|
try {
|
||||||
for (; i < size; i++) {
|
for (; i < size; i++) {
|
||||||
@ -67,9 +67,9 @@ namespace boost {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
inline void array_construct_args(T* memory, std::size_t size, Args&&... args) {
|
inline void array_init_args(T* memory, std::size_t size, Args&&... args) {
|
||||||
std::size_t i = 0;
|
std::size_t i = 0;
|
||||||
try {
|
try {
|
||||||
for (; i < size; i++) {
|
for (; i < size; i++) {
|
||||||
@ -84,7 +84,7 @@ namespace boost {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct_list(T* memory, std::size_t size, const T* list) {
|
inline void array_init_list(T* memory, std::size_t size, const T* list) {
|
||||||
std::size_t i = 0;
|
std::size_t i = 0;
|
||||||
try {
|
try {
|
||||||
for (; i < size; i++) {
|
for (; i < size; i++) {
|
||||||
@ -97,7 +97,7 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
template<typename T, std::size_t N>
|
template<typename T, std::size_t N>
|
||||||
inline void array_construct_list(T* memory, std::size_t size, const T* list) {
|
inline void array_init_list(T* memory, std::size_t size, const T* list) {
|
||||||
std::size_t i = 0;
|
std::size_t i = 0;
|
||||||
try {
|
try {
|
||||||
for (; i < size; i++) {
|
for (; i < size; i++) {
|
||||||
@ -110,10 +110,10 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct_noinit(T*, std::size_t, boost::true_type) {
|
inline void array_noinit(T*, std::size_t, boost::true_type) {
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct_noinit(T* memory, std::size_t size, boost::false_type) {
|
inline void array_noinit(T* memory, std::size_t size, boost::false_type) {
|
||||||
std::size_t i = 0;
|
std::size_t i = 0;
|
||||||
try {
|
try {
|
||||||
for (; i < size; i++) {
|
for (; i < size; i++) {
|
||||||
@ -126,9 +126,9 @@ namespace boost {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void array_construct_noinit(T* memory, std::size_t size) {
|
inline void array_noinit(T* memory, std::size_t size) {
|
||||||
boost::has_trivial_default_constructor<T> type;
|
boost::has_trivial_default_constructor<T> type;
|
||||||
array_construct_noinit(memory, size, type);
|
array_noinit(memory, size, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,10 +33,10 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2);
|
d2->init(p2);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
inline typename boost::detail::sp_if_array<T>::type
|
inline typename boost::detail::sp_if_array<T>::type
|
||||||
make_shared(std::size_t size, Args&&... args) {
|
make_shared(std::size_t size, Args&&... args) {
|
||||||
@ -51,7 +51,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<Args>(args)...);
|
d2->init_args(p2, boost::detail::sp_forward<Args>(args)...);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
@ -70,29 +70,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[N]>* D2;
|
typedef boost::detail::array_deleter<T2[N]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<Args>(args)...);
|
d2->init_args(p2, boost::detail::sp_forward<Args>(args)...);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
||||||
template<typename T>
|
|
||||||
inline typename boost::detail::sp_if_array<T>::type
|
|
||||||
make_shared(std::initializer_list<typename boost::detail::array_inner<T>::type> list) {
|
|
||||||
typedef typename boost::detail::array_inner<T>::type T1;
|
|
||||||
typedef typename boost::detail::array_base<T1>::type T2;
|
|
||||||
typedef const T2 T3;
|
|
||||||
T1* p1 = 0;
|
|
||||||
T2* p2 = 0;
|
|
||||||
T3* p3 = 0;
|
|
||||||
std::size_t n1 = list.size() * boost::detail::array_total<T1>::size;
|
|
||||||
boost::detail::make_array_helper<T2[]> a1(n1, &p2);
|
|
||||||
boost::detail::array_deleter<T2[]> d1(n1);
|
|
||||||
boost::shared_ptr<T> s1(p1, d1, a1);
|
|
||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
|
||||||
p3 = reinterpret_cast<T3*>(list.begin());
|
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
|
||||||
d2->construct_list(p2, p3);
|
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -116,7 +94,7 @@ namespace boost {
|
|||||||
p3 = reinterpret_cast<T3*>(list);
|
p3 = reinterpret_cast<T3*>(list);
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_list(p2, p3);
|
d2->init_list(p2, p3);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
@ -140,7 +118,7 @@ namespace boost {
|
|||||||
p3 = reinterpret_cast<T3*>(list);
|
p3 = reinterpret_cast<T3*>(list);
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_list<M>(p2, p3);
|
d2->init_list<M>(p2, p3);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
@ -163,10 +141,32 @@ namespace boost {
|
|||||||
p3 = reinterpret_cast<T3*>(list);
|
p3 = reinterpret_cast<T3*>(list);
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_list<M>(p2, p3);
|
d2->init_list<M>(p2, p3);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
|
template<typename T>
|
||||||
|
inline typename boost::detail::sp_if_array<T>::type
|
||||||
|
make_shared(std::initializer_list<typename boost::detail::array_inner<T>::type> list) {
|
||||||
|
typedef typename boost::detail::array_inner<T>::type T1;
|
||||||
|
typedef typename boost::detail::array_base<T1>::type T2;
|
||||||
|
typedef const T2 T3;
|
||||||
|
T1* p1 = 0;
|
||||||
|
T2* p2 = 0;
|
||||||
|
T3* p3 = 0;
|
||||||
|
std::size_t n1 = list.size() * boost::detail::array_total<T1>::size;
|
||||||
|
boost::detail::make_array_helper<T2[]> a1(n1, &p2);
|
||||||
|
boost::detail::array_deleter<T2[]> d1(n1);
|
||||||
|
boost::shared_ptr<T> s1(p1, d1, a1);
|
||||||
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
|
p3 = reinterpret_cast<T3*>(list.begin());
|
||||||
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
|
d2->init_list(p2, p3);
|
||||||
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline typename boost::detail::sp_if_array<T>::type
|
inline typename boost::detail::sp_if_array<T>::type
|
||||||
make_shared(std::size_t size,
|
make_shared(std::size_t size,
|
||||||
@ -182,7 +182,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<T2>(value));
|
d2->init_value(p2, boost::detail::sp_forward<T2>(value));
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
@ -201,7 +201,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[N]>* D2;
|
typedef boost::detail::array_deleter<T2[N]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct(p2, boost::detail::sp_forward<T2>(value));
|
d2->init_value(p2, boost::detail::sp_forward<T2>(value));
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -220,7 +220,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[]>* D2;
|
typedef boost::detail::array_deleter<T2[]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_noinit(p2);
|
d2->noinit(p2);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
@ -239,7 +239,7 @@ namespace boost {
|
|||||||
typedef boost::detail::array_deleter<T2[N]>* D2;
|
typedef boost::detail::array_deleter<T2[N]>* D2;
|
||||||
p1 = reinterpret_cast<T1*>(p2);
|
p1 = reinterpret_cast<T1*>(p2);
|
||||||
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
D2 d2 = static_cast<D2>(s1._internal_get_untyped_deleter());
|
||||||
d2->construct_noinit(p2);
|
d2->noinit(p2);
|
||||||
return boost::shared_ptr<T>(s1, p1);
|
return boost::shared_ptr<T>(s1, p1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
template<typename T, typename A>
|
template<typename T, typename A>
|
||||||
shared_ptr<T[]> <a href="#functions">allocate_shared</a>(const A& allocator, size_t size);
|
shared_ptr<T[]> <a href="#functions">allocate_shared</a>(const A& allocator, size_t size);
|
||||||
|
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
shared_ptr<T[]> <a href="#functions">make_shared</a>(size_t size, Args&&... args);
|
shared_ptr<T[]> <a href="#functions">make_shared</a>(size_t size, Args&&... args);
|
||||||
|
|
||||||
@ -48,15 +48,7 @@
|
|||||||
template<typename T, typename A, typename... Args>
|
template<typename T, typename A, typename... Args>
|
||||||
shared_ptr<T[N]> <a href="#functions">allocate_shared</a>(const A& allocator, Args&&... args);
|
shared_ptr<T[N]> <a href="#functions">allocate_shared</a>(const A& allocator, Args&&... args);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
||||||
template<typename T, typename... Args>
|
|
||||||
shared_ptr<T[]> <a href="#functions">make_shared</a>(initializer_list<T> list);
|
|
||||||
|
|
||||||
template<typename T, typename A, typename... Args>
|
|
||||||
shared_ptr<T[]> <a href="#functions">allocate_shared</a>(const A& allocator, initializer_list<T> list);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
shared_ptr<T[N]> <a href="#functions">make_shared</a>(const T (&list)[N]);
|
shared_ptr<T[N]> <a href="#functions">make_shared</a>(const T (&list)[N]);
|
||||||
@ -76,7 +68,15 @@
|
|||||||
template<typename T, typename A, typename... Args>
|
template<typename T, typename A, typename... Args>
|
||||||
shared_ptr<T[M][N]> <a href="#functions">allocate_shared</a>(const A& allocator, const T (&list)[N]);
|
shared_ptr<T[M][N]> <a href="#functions">allocate_shared</a>(const A& allocator, const T (&list)[N]);
|
||||||
|
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
|
template<typename T, typename... Args>
|
||||||
|
shared_ptr<T[]> <a href="#functions">make_shared</a>(initializer_list<T> list);
|
||||||
|
|
||||||
|
template<typename T, typename A, typename... Args>
|
||||||
|
shared_ptr<T[]> <a href="#functions">allocate_shared</a>(const A& allocator, initializer_list<T> list);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
template<typename T>
|
template<typename T>
|
||||||
shared_ptr<T[]> <a href="#functions">make_shared</a>(size_t size, T&& value);
|
shared_ptr<T[]> <a href="#functions">make_shared</a>(size_t size, T&& value);
|
||||||
|
|
||||||
|
@ -137,16 +137,16 @@ import testing ;
|
|||||||
[ run make_shared_array_test.cpp ]
|
[ run make_shared_array_test.cpp ]
|
||||||
[ run make_shared_arrays_test.cpp ]
|
[ run make_shared_arrays_test.cpp ]
|
||||||
[ run make_shared_array_create_test.cpp ]
|
[ run make_shared_array_create_test.cpp ]
|
||||||
[ run make_shared_array_init_test.cpp ]
|
[ run make_shared_array_init_test.cpp : : : <toolset>gcc:<cxxflags>-fno-deduce-init-list ]
|
||||||
[ run make_shared_arrays_create_test.cpp ]
|
[ run make_shared_arrays_create_test.cpp : : : <toolset>gcc:<cxxflags>-fno-deduce-init-list ]
|
||||||
[ run make_shared_array_throws_test.cpp ]
|
[ run make_shared_array_throws_test.cpp ]
|
||||||
[ run make_shared_array_esft_test.cpp ]
|
[ run make_shared_array_esft_test.cpp ]
|
||||||
[ run make_shared_array_args_test.cpp ]
|
[ run make_shared_array_args_test.cpp ]
|
||||||
[ run allocate_shared_array_test.cpp ]
|
[ run allocate_shared_array_test.cpp ]
|
||||||
[ run allocate_shared_arrays_test.cpp ]
|
[ run allocate_shared_arrays_test.cpp ]
|
||||||
[ run allocate_shared_array_create_test.cpp ]
|
[ run allocate_shared_array_create_test.cpp ]
|
||||||
[ run allocate_shared_array_init_test.cpp ]
|
[ run allocate_shared_array_init_test.cpp : : : <toolset>gcc:<cxxflags>-fno-deduce-init-list ]
|
||||||
[ run allocate_shared_arrays_create_test.cpp ]
|
[ run allocate_shared_arrays_create_test.cpp : : : <toolset>gcc:<cxxflags>-fno-deduce-init-list ]
|
||||||
[ run allocate_shared_array_throws_test.cpp ]
|
[ run allocate_shared_array_throws_test.cpp ]
|
||||||
[ run allocate_shared_array_esft_test.cpp ]
|
[ run allocate_shared_array_esft_test.cpp ]
|
||||||
[ run allocate_shared_array_args_test.cpp ]
|
[ run allocate_shared_array_args_test.cpp ]
|
||||||
|
@ -36,7 +36,7 @@ private:
|
|||||||
int type::instances = 0;
|
int type::instances = 0;
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[]> a1 = boost::allocate_shared<type[]>(std::allocator<type>(), 2, 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
boost::shared_ptr<type[]> a1 = boost::allocate_shared<type[]>(std::allocator<type>(), 2, 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||||
|
@ -20,6 +20,35 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<int[4]> a1 = boost::allocate_shared<int[4]>(std::allocator<int>(), { 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0] == 0);
|
||||||
|
BOOST_TEST(a1[1] == 1);
|
||||||
|
BOOST_TEST(a1[2] == 2);
|
||||||
|
BOOST_TEST(a1[3] == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<const int[4]> a1 = boost::allocate_shared<const int[4]>(std::allocator<int>(), { 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0] == 0);
|
||||||
|
BOOST_TEST(a1[1] == 1);
|
||||||
|
BOOST_TEST(a1[2] == 2);
|
||||||
|
BOOST_TEST(a1[3] == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<type[4]> a1 = boost::allocate_shared<type[4]>(std::allocator<type>(), { 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0].value == 0);
|
||||||
|
BOOST_TEST(a1[1].value == 1);
|
||||||
|
BOOST_TEST(a1[2].value == 2);
|
||||||
|
BOOST_TEST(a1[3].value == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<const type[4]> a1 = boost::allocate_shared<const type[4]>(std::allocator<type>(), { 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0].value == 0);
|
||||||
|
BOOST_TEST(a1[1].value == 1);
|
||||||
|
BOOST_TEST(a1[2].value == 2);
|
||||||
|
BOOST_TEST(a1[3].value == 3);
|
||||||
|
}
|
||||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<int[]> a1 = boost::allocate_shared<int[]>(std::allocator<int>(), { 0, 1, 2, 3 });
|
boost::shared_ptr<int[]> a1 = boost::allocate_shared<int[]>(std::allocator<int>(), { 0, 1, 2, 3 });
|
||||||
@ -50,35 +79,6 @@ int main() {
|
|||||||
BOOST_TEST(a1[3].value == 3);
|
BOOST_TEST(a1[3].value == 3);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
|
||||||
{
|
|
||||||
boost::shared_ptr<int[4]> a1 = boost::allocate_shared<int[4]>(std::allocator<int>(), { 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0] == 0);
|
|
||||||
BOOST_TEST(a1[1] == 1);
|
|
||||||
BOOST_TEST(a1[2] == 2);
|
|
||||||
BOOST_TEST(a1[3] == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<const int[4]> a1 = boost::allocate_shared<const int[4]>(std::allocator<int>(), { 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0] == 0);
|
|
||||||
BOOST_TEST(a1[1] == 1);
|
|
||||||
BOOST_TEST(a1[2] == 2);
|
|
||||||
BOOST_TEST(a1[3] == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<type[4]> a1 = boost::allocate_shared<type[4]>(std::allocator<type>(), { 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0].value == 0);
|
|
||||||
BOOST_TEST(a1[1].value == 1);
|
|
||||||
BOOST_TEST(a1[2].value == 2);
|
|
||||||
BOOST_TEST(a1[3].value == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<const type[4]> a1 = boost::allocate_shared<const type[4]>(std::allocator<type>(), { 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0].value == 0);
|
|
||||||
BOOST_TEST(a1[1].value == 1);
|
|
||||||
BOOST_TEST(a1[2].value == 2);
|
|
||||||
BOOST_TEST(a1[3].value == 3);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ int main() {
|
|||||||
a1.reset();
|
a1.reset();
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[]> a1 = boost::allocate_shared<type[]>(std::allocator<type>(), 3, 1, 5);
|
boost::shared_ptr<type[]> a1 = boost::allocate_shared<type[]>(std::allocator<type>(), 3, 1, 5);
|
||||||
|
@ -43,7 +43,7 @@ int main() {
|
|||||||
} catch (...) {
|
} catch (...) {
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
try {
|
try {
|
||||||
boost::allocate_shared<type[6]>(std::allocator<type>());
|
boost::allocate_shared<type[6]>(std::allocator<type>());
|
||||||
|
@ -21,22 +21,6 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
||||||
{
|
|
||||||
boost::shared_ptr<int[]> a1 = boost::allocate_shared<int[]>(std::allocator<int>(), {0, 1, 2, 3});
|
|
||||||
BOOST_TEST(a1[0] == 0);
|
|
||||||
BOOST_TEST(a1[1] == 1);
|
|
||||||
BOOST_TEST(a1[2] == 2);
|
|
||||||
BOOST_TEST(a1[3] == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<int[][2]> a1 = boost::allocate_shared<int[][2]>(std::allocator<int>(), { {0, 1}, {2, 3} });
|
|
||||||
BOOST_TEST(a1[0][0] == 0);
|
|
||||||
BOOST_TEST(a1[0][1] == 1);
|
|
||||||
BOOST_TEST(a1[1][0] == 2);
|
|
||||||
BOOST_TEST(a1[1][1] == 3);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<int[4]> a1 = boost::allocate_shared<int[4]>(std::allocator<int>(), {0, 1, 2, 3});
|
boost::shared_ptr<int[4]> a1 = boost::allocate_shared<int[4]>(std::allocator<int>(), {0, 1, 2, 3});
|
||||||
@ -80,7 +64,23 @@ int main() {
|
|||||||
BOOST_TEST(a1[1][1][0] == 2);
|
BOOST_TEST(a1[1][1][0] == 2);
|
||||||
BOOST_TEST(a1[1][1][1] == 3);
|
BOOST_TEST(a1[1][1][1] == 3);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<int[]> a1 = boost::allocate_shared<int[]>(std::allocator<int>(), {0, 1, 2, 3});
|
||||||
|
BOOST_TEST(a1[0] == 0);
|
||||||
|
BOOST_TEST(a1[1] == 1);
|
||||||
|
BOOST_TEST(a1[2] == 2);
|
||||||
|
BOOST_TEST(a1[3] == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<int[][2]> a1 = boost::allocate_shared<int[][2]>(std::allocator<int>(), { {0, 1}, {2, 3} });
|
||||||
|
BOOST_TEST(a1[0][0] == 0);
|
||||||
|
BOOST_TEST(a1[0][1] == 1);
|
||||||
|
BOOST_TEST(a1[1][0] == 2);
|
||||||
|
BOOST_TEST(a1[1][1] == 3);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[]> a1 = boost::allocate_shared<type[]>(std::allocator<type>(), 4, {1, 2});
|
boost::shared_ptr<type[]> a1 = boost::allocate_shared<type[]>(std::allocator<type>(), 4, {1, 2});
|
||||||
BOOST_TEST(a1[0].x == 1);
|
BOOST_TEST(a1[0].x == 1);
|
||||||
|
@ -62,7 +62,7 @@ int main() {
|
|||||||
a1.reset();
|
a1.reset();
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[][2][2]> a1 = boost::allocate_shared<type[][2][2]>(std::allocator<type>(), 2, 1, 5);
|
boost::shared_ptr<type[][2][2]> a1 = boost::allocate_shared<type[][2][2]>(std::allocator<type>(), 2, 1, 5);
|
||||||
|
@ -36,7 +36,7 @@ private:
|
|||||||
int type::instances = 0;
|
int type::instances = 0;
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[]> a1 = boost::make_shared<type[]>(2, 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
boost::shared_ptr<type[]> a1 = boost::make_shared<type[]>(2, 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||||
|
@ -20,6 +20,35 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<int[4]> a1 = boost::make_shared<int[4]>({ 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0] == 0);
|
||||||
|
BOOST_TEST(a1[1] == 1);
|
||||||
|
BOOST_TEST(a1[2] == 2);
|
||||||
|
BOOST_TEST(a1[3] == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<const int[4]> a1 = boost::make_shared<const int[4]>({ 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0] == 0);
|
||||||
|
BOOST_TEST(a1[1] == 1);
|
||||||
|
BOOST_TEST(a1[2] == 2);
|
||||||
|
BOOST_TEST(a1[3] == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<type[4]> a1 = boost::make_shared<type[4]>({ 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0].value == 0);
|
||||||
|
BOOST_TEST(a1[1].value == 1);
|
||||||
|
BOOST_TEST(a1[2].value == 2);
|
||||||
|
BOOST_TEST(a1[3].value == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<const type[4]> a1 = boost::make_shared<const type[4]>({ 0, 1, 2, 3 });
|
||||||
|
BOOST_TEST(a1[0].value == 0);
|
||||||
|
BOOST_TEST(a1[1].value == 1);
|
||||||
|
BOOST_TEST(a1[2].value == 2);
|
||||||
|
BOOST_TEST(a1[3].value == 3);
|
||||||
|
}
|
||||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<int[]> a1 = boost::make_shared<int[]>({ 0, 1, 2, 3 });
|
boost::shared_ptr<int[]> a1 = boost::make_shared<int[]>({ 0, 1, 2, 3 });
|
||||||
@ -50,35 +79,6 @@ int main() {
|
|||||||
BOOST_TEST(a1[3].value == 3);
|
BOOST_TEST(a1[3].value == 3);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
|
||||||
{
|
|
||||||
boost::shared_ptr<int[4]> a1 = boost::make_shared<int[4]>({ 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0] == 0);
|
|
||||||
BOOST_TEST(a1[1] == 1);
|
|
||||||
BOOST_TEST(a1[2] == 2);
|
|
||||||
BOOST_TEST(a1[3] == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<const int[4]> a1 = boost::make_shared<const int[4]>({ 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0] == 0);
|
|
||||||
BOOST_TEST(a1[1] == 1);
|
|
||||||
BOOST_TEST(a1[2] == 2);
|
|
||||||
BOOST_TEST(a1[3] == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<type[4]> a1 = boost::make_shared<type[4]>({ 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0].value == 0);
|
|
||||||
BOOST_TEST(a1[1].value == 1);
|
|
||||||
BOOST_TEST(a1[2].value == 2);
|
|
||||||
BOOST_TEST(a1[3].value == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<const type[4]> a1 = boost::make_shared<const type[4]>({ 0, 1, 2, 3 });
|
|
||||||
BOOST_TEST(a1[0].value == 0);
|
|
||||||
BOOST_TEST(a1[1].value == 1);
|
|
||||||
BOOST_TEST(a1[2].value == 2);
|
|
||||||
BOOST_TEST(a1[3].value == 3);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ int main() {
|
|||||||
a1.reset();
|
a1.reset();
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[]> a1 = boost::make_shared<type[]>(3, 1, 5);
|
boost::shared_ptr<type[]> a1 = boost::make_shared<type[]>(3, 1, 5);
|
||||||
|
@ -43,7 +43,7 @@ int main() {
|
|||||||
} catch (...) {
|
} catch (...) {
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
try {
|
try {
|
||||||
boost::make_shared<type[6]>();
|
boost::make_shared<type[6]>();
|
||||||
|
@ -21,22 +21,6 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
||||||
{
|
|
||||||
boost::shared_ptr<int[]> a1 = boost::make_shared<int[]>({0, 1, 2, 3});
|
|
||||||
BOOST_TEST(a1[0] == 0);
|
|
||||||
BOOST_TEST(a1[1] == 1);
|
|
||||||
BOOST_TEST(a1[2] == 2);
|
|
||||||
BOOST_TEST(a1[3] == 3);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boost::shared_ptr<int[][2]> a1 = boost::make_shared<int[][2]>({ {0, 1}, {2, 3} });
|
|
||||||
BOOST_TEST(a1[0][0] == 0);
|
|
||||||
BOOST_TEST(a1[0][1] == 1);
|
|
||||||
BOOST_TEST(a1[1][0] == 2);
|
|
||||||
BOOST_TEST(a1[1][1] == 3);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<int[4]> a1 = boost::make_shared<int[4]>({0, 1, 2, 3});
|
boost::shared_ptr<int[4]> a1 = boost::make_shared<int[4]>({0, 1, 2, 3});
|
||||||
@ -80,7 +64,23 @@ int main() {
|
|||||||
BOOST_TEST(a1[1][1][0] == 2);
|
BOOST_TEST(a1[1][1][0] == 2);
|
||||||
BOOST_TEST(a1[1][1][1] == 3);
|
BOOST_TEST(a1[1][1][1] == 3);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<int[]> a1 = boost::make_shared<int[]>({0, 1, 2, 3});
|
||||||
|
BOOST_TEST(a1[0] == 0);
|
||||||
|
BOOST_TEST(a1[1] == 1);
|
||||||
|
BOOST_TEST(a1[2] == 2);
|
||||||
|
BOOST_TEST(a1[3] == 3);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
boost::shared_ptr<int[][2]> a1 = boost::make_shared<int[][2]>({ {0, 1}, {2, 3} });
|
||||||
|
BOOST_TEST(a1[0][0] == 0);
|
||||||
|
BOOST_TEST(a1[0][1] == 1);
|
||||||
|
BOOST_TEST(a1[1][0] == 2);
|
||||||
|
BOOST_TEST(a1[1][1] == 3);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[]> a1 = boost::make_shared<type[]>(4, {1, 2});
|
boost::shared_ptr<type[]> a1 = boost::make_shared<type[]>(4, {1, 2});
|
||||||
BOOST_TEST(a1[0].x == 1);
|
BOOST_TEST(a1[0].x == 1);
|
||||||
|
@ -62,7 +62,7 @@ int main() {
|
|||||||
a1.reset();
|
a1.reset();
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
}
|
}
|
||||||
#if defined(BOOST_HAS_VARIADIC_TMPL) && defined(BOOST_HAS_RVALUE_REFS)
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||||
BOOST_TEST(type::instances == 0);
|
BOOST_TEST(type::instances == 0);
|
||||||
{
|
{
|
||||||
boost::shared_ptr<type[][2][2]> a1 = boost::make_shared<type[][2][2]>(2, 1, 5);
|
boost::shared_ptr<type[][2][2]> a1 = boost::make_shared<type[][2][2]>(2, 1, 5);
|
||||||
|
Reference in New Issue
Block a user