From 39ff002d2ea0beca51cc3caaa5e8430cabbd4b32 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Wed, 28 Nov 2012 07:32:30 +0000 Subject: [PATCH] More consistency in type parameters in helper details of allocate_shared and make_shared. [SVN r81610] --- .../boost/smart_ptr/allocate_shared_array.hpp | 32 +++++++-------- .../detail/allocate_array_helper.hpp | 14 ++++--- .../boost/smart_ptr/detail/array_deleter.hpp | 4 +- .../smart_ptr/detail/make_array_helper.hpp | 14 ++++--- include/boost/smart_ptr/make_shared_array.hpp | 40 +++++++++---------- 5 files changed, 55 insertions(+), 49 deletions(-) diff --git a/include/boost/smart_ptr/allocate_shared_array.hpp b/include/boost/smart_ptr/allocate_shared_array.hpp index 22ad71b..4a7de24 100644 --- a/include/boost/smart_ptr/allocate_shared_array.hpp +++ b/include/boost/smart_ptr/allocate_shared_array.hpp @@ -28,12 +28,12 @@ namespace boost { T1* p1 = 0; T2* p2 = 0; std::size_t n1 = size * boost::detail::array_total::size; - boost::detail::allocate_array_helper a1(allocator, n1, &p2); - boost::detail::array_deleter d1; + boost::detail::allocate_array_helper a1(allocator, n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct(p2, n1); return boost::shared_ptr(s1, p1); } @@ -46,12 +46,12 @@ namespace boost { T1* p1 = 0; T2* p2 = 0; std::size_t n1 = size * boost::detail::array_total::size; - boost::detail::allocate_array_helper a1(allocator, n1, &p2); - boost::detail::array_deleter d1; + boost::detail::allocate_array_helper a1(allocator, n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct(p2, n1, boost::detail::sp_forward(args)...); return boost::shared_ptr(s1, p1); } @@ -85,13 +85,13 @@ namespace boost { T2* p2 = 0; T3* p3 = 0; std::size_t n1 = list.size() * boost::detail::array_total::size; - boost::detail::allocate_array_helper a1(allocator, n1, &p2); - boost::detail::array_deleter d1; + boost::detail::allocate_array_helper a1(allocator, n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p3 = reinterpret_cast(list.begin()); p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct_list(p2, n1, p3); return boost::shared_ptr(s1, p1); } @@ -129,13 +129,13 @@ namespace boost { T3* p3 = 0; enum { M = boost::detail::array_total::size }; std::size_t n1 = M * list.size(); - boost::detail::allocate_array_helper a1(allocator, n1, &p2); - boost::detail::array_deleter d1; + boost::detail::allocate_array_helper a1(allocator, n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p3 = reinterpret_cast(list.begin()); p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct_list(p2, n1, p3, M); return boost::shared_ptr(s1, p1); } diff --git a/include/boost/smart_ptr/detail/allocate_array_helper.hpp b/include/boost/smart_ptr/detail/allocate_array_helper.hpp index ca151bc..f7c64fe 100644 --- a/include/boost/smart_ptr/detail/allocate_array_helper.hpp +++ b/include/boost/smart_ptr/detail/allocate_array_helper.hpp @@ -13,8 +13,10 @@ namespace boost { namespace detail { - template - class allocate_array_helper { + template + class allocate_array_helper; + template + class allocate_array_helper { template friend class allocate_array_helper; typedef typename A::template rebind ::other A2; @@ -29,7 +31,7 @@ namespace boost { typedef typename A2::difference_type difference_type; template struct rebind { - typedef allocate_array_helper other; + typedef allocate_array_helper other; }; allocate_array_helper(const A& allocator, std::size_t size, T** data) : allocator(allocator), @@ -37,7 +39,7 @@ namespace boost { data(data) { } template - allocate_array_helper(const allocate_array_helper& other) + allocate_array_helper(const allocate_array_helper& other) : allocator(other.allocator), size(other.size), data(other.data) { @@ -75,11 +77,11 @@ namespace boost { allocator.destroy(memory); } template - bool operator==(const allocate_array_helper& other) const { + bool operator==(const allocate_array_helper& other) const { return allocator == other.allocator; } template - bool operator!=(const allocate_array_helper& other) const { + bool operator!=(const allocate_array_helper& other) const { return !(*this == other); } private: diff --git a/include/boost/smart_ptr/detail/array_deleter.hpp b/include/boost/smart_ptr/detail/array_deleter.hpp index b8c62ba..b43f5fa 100644 --- a/include/boost/smart_ptr/detail/array_deleter.hpp +++ b/include/boost/smart_ptr/detail/array_deleter.hpp @@ -15,7 +15,9 @@ namespace boost { namespace detail { template - class array_deleter { + class array_deleter; + template + class array_deleter { public: array_deleter() : size(0) { diff --git a/include/boost/smart_ptr/detail/make_array_helper.hpp b/include/boost/smart_ptr/detail/make_array_helper.hpp index e6c0123..38c9dc9 100644 --- a/include/boost/smart_ptr/detail/make_array_helper.hpp +++ b/include/boost/smart_ptr/detail/make_array_helper.hpp @@ -13,8 +13,10 @@ namespace boost { namespace detail { - template - class make_array_helper { + template + class make_array_helper; + template + class make_array_helper { template friend class make_array_helper; public: @@ -27,14 +29,14 @@ namespace boost { typedef ptrdiff_t difference_type; template struct rebind { - typedef make_array_helper other; + typedef make_array_helper other; }; make_array_helper(std::size_t size, T** data) : size(sizeof(T) * size), data(data) { } template - make_array_helper(const make_array_helper& other) + make_array_helper(const make_array_helper& other) : size(other.size), data(other.data) { } @@ -70,11 +72,11 @@ namespace boost { memory->~Y(); } template - bool operator==(const make_array_helper& other) const { + bool operator==(const make_array_helper& other) const { return true; } template - bool operator!=(const make_array_helper& other) const { + bool operator!=(const make_array_helper& other) const { return !(*this == other); } private: diff --git a/include/boost/smart_ptr/make_shared_array.hpp b/include/boost/smart_ptr/make_shared_array.hpp index c6b0e18..d1eeac7 100644 --- a/include/boost/smart_ptr/make_shared_array.hpp +++ b/include/boost/smart_ptr/make_shared_array.hpp @@ -28,12 +28,12 @@ namespace boost { T1* p1 = 0; T2* p2 = 0; std::size_t n1 = size * boost::detail::array_total::size; - boost::detail::make_array_helper a1(n1, &p2); - boost::detail::array_deleter d1; + boost::detail::make_array_helper a1(n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct(p2, n1); return boost::shared_ptr(s1, p1); } @@ -46,12 +46,12 @@ namespace boost { T1* p1 = 0; T2* p2 = 0; std::size_t n1 = size * boost::detail::array_total::size; - boost::detail::make_array_helper a1(n1, &p2); - boost::detail::array_deleter d1; + boost::detail::make_array_helper a1(n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct(p2, n1, boost::detail::sp_forward(args)...); return boost::shared_ptr(s1, p1); } @@ -84,13 +84,13 @@ namespace boost { T2* p2 = 0; T3* p3 = 0; std::size_t n1 = list.size() * boost::detail::array_total::size; - boost::detail::make_array_helper a1(n1, &p2); - boost::detail::array_deleter d1; + boost::detail::make_array_helper a1(n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p3 = reinterpret_cast(list.begin()); p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct_list(p2, n1, p3); return boost::shared_ptr(s1, p1); } @@ -127,13 +127,13 @@ namespace boost { T3* p3 = 0; enum { M = boost::detail::array_total::size }; std::size_t n1 = M * size; - boost::detail::make_array_helper a1(n1, &p2); - boost::detail::array_deleter d1; + boost::detail::make_array_helper a1(n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p3 = reinterpret_cast(list.begin()); p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct_list(p2, n1, p3, M); return boost::shared_ptr(s1, p1); } @@ -168,12 +168,12 @@ namespace boost { T1* p1 = 0; T2* p2 = 0; std::size_t n1 = size * boost::detail::array_total::size; - boost::detail::make_array_helper a1(n1, &p2); - boost::detail::array_deleter d1; + boost::detail::make_array_helper a1(n1, &p2); + boost::detail::array_deleter d1; boost::shared_ptr s1(p1, d1, a1); - boost::detail::array_deleter* d2; + boost::detail::array_deleter* d2; p1 = reinterpret_cast(p2); - d2 = get_deleter >(s1); + d2 = get_deleter >(s1); d2->construct_noinit(p2, n1); return boost::shared_ptr(s1, p1); }