From 2bdd1ae705f49091afd089f870dd3db86be31923 Mon Sep 17 00:00:00 2001 From: rknuus Date: Mon, 22 Jan 2018 20:08:23 +0100 Subject: [PATCH] add example for R.24 (#1127) * add example for R.24 taken from https://cpppatterns.com/patterns/weak-reference.html, where it's published under CC0 Public Domain Dedication * improve example for R.24 --- CppCoreGuidelines.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/CppCoreGuidelines.md b/CppCoreGuidelines.md index d79642b..d0db652 100644 --- a/CppCoreGuidelines.md +++ b/CppCoreGuidelines.md @@ -9151,7 +9151,35 @@ be able to destroy a cyclic structure. ##### Example - ??? + #include + + class bar; + + class foo + { + public: + explicit foo(const std::shared_ptr& forward_reference) + : forward_reference_(forward_reference) + { } + private: + std::shared_ptr forward_reference_; + }; + + class bar + { + public: + explicit bar(const std::weak_ptr& back_reference) + : back_reference_(back_reference) + { } + void do_something() + { + if (auto shared_back_reference = back_reference_.lock()) { + // Use *shared_back_reference + } + } + private: + std::weak_ptr back_reference_; + }; ##### Note