From 4805772cacb406a01bfef9c84486b9f344095f63 Mon Sep 17 00:00:00 2001 From: alandefreitas Date: Tue, 28 May 2024 14:06:07 -0300 Subject: [PATCH] fix: atomic shared_ptr checks --- include/mrdocs/Dom/Object.hpp | 4 ++++ src/lib/Dom/Object.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/include/mrdocs/Dom/Object.hpp b/include/mrdocs/Dom/Object.hpp index a94159921..3e4713664 100644 --- a/include/mrdocs/Dom/Object.hpp +++ b/include/mrdocs/Dom/Object.hpp @@ -432,7 +432,11 @@ class MRDOCS_DECL class MRDOCS_DECL LazyObjectImpl : public ObjectImpl { +#ifdef __cpp_lib_atomic_shared_ptr std::atomic> mutable sp_; +#else + std::shared_ptr mutable sp_; +#endif using impl_type = Object::impl_type; diff --git a/src/lib/Dom/Object.cpp b/src/lib/Dom/Object.cpp index 2f373d5cd..c34c0d19d 100644 --- a/src/lib/Dom/Object.cpp +++ b/src/lib/Dom/Object.cpp @@ -217,6 +217,7 @@ ObjectImpl& LazyObjectImpl:: obj() const { +#ifdef __cpp_lib_atomic_shared_ptr auto impl = sp_.load(); if(impl) return *impl; @@ -225,6 +226,9 @@ obj() const expected, construct().impl())) return *sp_.load(); return *expected; +#else + return *sp_; +#endif } std::size_t