diff --git a/include/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp b/include/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp index 4f530a555..a69b18ea7 100644 --- a/include/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp +++ b/include/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp @@ -190,11 +190,11 @@ struct allocators // create_node_impl -template -struct create_node_poly +template +struct create_dynamic_node { - template - static inline RetNode * apply(AllocNode & alloc_node, AllocElems & alloc_elems) + template + static inline BaseNode * apply(AllocNode & alloc_node, AllocElems & alloc_elems) { Node * p = alloc_node.allocate(1); @@ -237,14 +237,13 @@ struct create_node< dynamic_internal_node > { - static inline typename node::type * + static inline dynamic_node * apply(Allocators & allocators) { - return create_node_poly< + return create_dynamic_node< + dynamic_node, dynamic_internal_node - >::template apply< - typename node::type - >(allocators.internal_node_allocator, allocators.internal_node_elements_allocator); + >::apply(allocators.internal_node_allocator, allocators.internal_node_elements_allocator); } }; @@ -254,14 +253,13 @@ struct create_node< dynamic_leaf > { - static inline typename node::type * + static inline dynamic_node * apply(Allocators & allocators) { - return create_node_poly< + return create_dynamic_node< + dynamic_node, dynamic_leaf - >::template apply< - typename node::type - >(allocators.leaf_allocator, allocators.leaf_elements_allocator); + >::template apply(allocators.leaf_allocator, allocators.leaf_elements_allocator); } }; @@ -273,7 +271,7 @@ struct destroy_node< dynamic_internal_node > { - static inline void apply(Allocators & allocators, typename node::type * n) + static inline void apply(Allocators & allocators, dynamic_node * n) { destroy_node_poly< dynamic_internal_node @@ -287,7 +285,7 @@ struct destroy_node< dynamic_leaf > { - static inline void apply(Allocators & allocators, typename node::type * n) + static inline void apply(Allocators & allocators, dynamic_node * n) { destroy_node_poly< dynamic_leaf diff --git a/include/boost/geometry/extensions/index/rtree/node/node_d_mem_static.hpp b/include/boost/geometry/extensions/index/rtree/node/node_d_mem_static.hpp index 820d88ddf..35d087a15 100644 --- a/include/boost/geometry/extensions/index/rtree/node/node_d_mem_static.hpp +++ b/include/boost/geometry/extensions/index/rtree/node/node_d_mem_static.hpp @@ -122,14 +122,13 @@ struct create_node< dynamic_internal_node > { - static inline typename node::type * + static inline dynamic_node * apply(Allocators & allocators) { - return create_node_poly< + return create_dynamic_node< + dynamic_node, dynamic_internal_node - >::template apply< - typename node::type - >(allocators.internal_node_allocator, allocators.internal_node_allocator); + >::template apply(allocators.internal_node_allocator, allocators.internal_node_allocator); } }; @@ -142,11 +141,10 @@ struct create_node< static inline typename node::type * apply(Allocators & allocators) { - return create_node_poly< + return create_dynamic_node< + dynamic_node, dynamic_leaf - >::template apply< - typename node::type - >(allocators.leaf_allocator, allocators.leaf_allocator); + >::template apply(allocators.leaf_allocator, allocators.leaf_allocator); } }; diff --git a/include/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp b/include/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp index 4b492c072..5cb15aa0f 100644 --- a/include/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp +++ b/include/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp @@ -153,10 +153,10 @@ struct allocators // create_node_variant -template +template struct create_node_variant { - template + template static inline RetNode * apply(AllocNode & alloc_node, AllocElems & alloc_elems) { RetNode * p = alloc_node.allocate(1); @@ -203,10 +203,9 @@ struct create_node< apply(Allocators & allocators) { return create_node_variant< + typename node::type, static_internal_node - >::template apply< - typename node::type - >(allocators.node_allocator, allocators.internal_node_elements_allocator); + >::template apply(allocators.node_allocator, allocators.internal_node_elements_allocator); } }; @@ -220,10 +219,9 @@ struct create_node< apply(Allocators & allocators) { return create_node_variant< + typename node::type, static_leaf - >::template apply< - typename node::type - >(allocators.node_allocator, allocators.leaf_elements_allocator); + >::template apply(allocators.node_allocator, allocators.leaf_elements_allocator); } }; diff --git a/include/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp b/include/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp index 89730b59c..f76784f1a 100644 --- a/include/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp +++ b/include/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp @@ -121,10 +121,9 @@ struct create_node< apply(Allocators & allocators) { return create_node_variant< + typename node::type, static_internal_node - >::template apply< - typename node::type - >(allocators.node_allocator, allocators.node_allocator); + >::template apply(allocators.node_allocator, allocators.node_allocator); } }; @@ -138,10 +137,9 @@ struct create_node< apply(Allocators & allocators) { return create_node_variant< + typename node::type, static_leaf - >::template apply< - typename node::type - >(allocators.node_allocator, allocators.node_allocator); + >::template apply(allocators.node_allocator, allocators.node_allocator); } };