diff --git a/docs/md/core.md b/docs/md/core.md
index 0f7b48310..1baf9962f 100644
--- a/docs/md/core.md
+++ b/docs/md/core.md
@@ -445,9 +445,9 @@ Some are geared towards simplifying the implementation of (internal or external)
allocator aware containers. Others are designed to help the developer with
everyday problems.
-The former are very specific and for niche problems. These are tools designed to
-unwrap fancy or plain pointers (`to_address`) or to help forget the meaning of
-acronyms like _POCCA_, _POCMA_ or _POCS_.
+The former are very specific and for niche problems. For example, there are
+tools designed to help forget the meaning of acronyms like _POCCA_, _POCMA_ or
+_POCS_.
I will not describe them here in detail. Instead, I recommend reading the inline
documentation to those interested in the subject.
diff --git a/src/entt/core/memory.hpp b/src/entt/core/memory.hpp
index 85ae8ee8b..bf19333af 100644
--- a/src/entt/core/memory.hpp
+++ b/src/entt/core/memory.hpp
@@ -10,21 +10,6 @@
namespace entt {
-/**
- * @brief Unwraps fancy pointers, does nothing otherwise (waiting for C++20).
- * @tparam Type Pointer type.
- * @param ptr Fancy or raw pointer.
- * @return A raw pointer that represents the address of the original pointer.
- */
-template
-[[nodiscard]] constexpr auto to_address(Type &&ptr) noexcept {
- if constexpr(std::is_pointer_v>) {
- return ptr;
- } else {
- return to_address(std::forward(ptr).operator->());
- }
-}
-
/**
* @brief Utility function to design allocation-aware containers.
* @tparam Allocator Type of allocator.
@@ -91,7 +76,7 @@ struct allocation_deleter: private Allocator {
*/
constexpr void operator()(pointer ptr) noexcept(std::is_nothrow_destructible_v) {
using alloc_traits = std::allocator_traits;
- alloc_traits::destroy(*this, to_address(ptr));
+ alloc_traits::destroy(*this, std::to_address(ptr));
alloc_traits::deallocate(*this, ptr, 1u);
}
};
@@ -116,7 +101,7 @@ constexpr auto allocate_unique(Allocator &allocator, Args &&...args) {
auto ptr = alloc_traits::allocate(alloc, 1u);
ENTT_TRY {
- alloc_traits::construct(alloc, to_address(ptr), std::forward(args)...);
+ alloc_traits::construct(alloc, std::to_address(ptr), std::forward(args)...);
}
ENTT_CATCH {
alloc_traits::deallocate(alloc, ptr, 1u);
diff --git a/src/entt/entity/storage.hpp b/src/entt/entity/storage.hpp
index 5f3647551..2aec8262f 100644
--- a/src/entt/entity/storage.hpp
+++ b/src/entt/entity/storage.hpp
@@ -265,7 +265,7 @@ class basic_storage: public basic_sparse_set(it.index())));
+ auto *elem = std::to_address(assure_at_least(static_cast(it.index())));
entt::uninitialized_construct_using_allocator(elem, get_allocator(), std::forward(args)...);
}
ENTT_CATCH {
@@ -306,7 +306,7 @@ class basic_storage: public basic_sparse_set shared = std::make_shared();
- auto *plain = &*shared;
-
- ASSERT_EQ(entt::to_address(shared), plain);
- ASSERT_EQ(entt::to_address(plain), plain);
-}
-
TEST(PoccaPocmaAndPocs, Functionalities) {
test::basic_test_allocator lhs;
test::basic_test_allocator rhs;