From 6187049d95ec68b046173287578c5a9c1bc37ae4 Mon Sep 17 00:00:00 2001 From: Sergey Zubkov Date: Wed, 13 Jul 2016 14:53:17 -0400 Subject: [PATCH] F.21 updated C++17 example --- CppCoreGuidelines.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CppCoreGuidelines.md b/CppCoreGuidelines.md index b21ee83..f9bb5fb 100644 --- a/CppCoreGuidelines.md +++ b/CppCoreGuidelines.md @@ -2570,8 +2570,7 @@ With C++11 we can write this, putting the results directly in existing local var With C++17 we may be able to write something like this, also declaring the variables: - auto { iter, success } = myset.insert("Hello"); - if (success) do_something_with(iter); + if (auto [ iter, success ] = myset.insert("Hello"); success) do_something_with(iter); **Exception**: For types like `string` and `vector` that carry additional capacity, it can sometimes be useful to treat it as in/out instead by using the "caller-allocated out" pattern, which is to pass an output-only object by reference to non-`const` so that when the callee writes to it the object can reuse any capacity or other resources that it already contains.