{"id":2015,"date":"2020-12-28T15:01:16","date_gmt":"2020-12-28T14:01:16","guid":{"rendered":"http:\/\/www.nuonsoft.com\/blog\/?p=2015"},"modified":"2020-12-28T15:01:19","modified_gmt":"2020-12-28T14:01:19","slug":"book-c-lambda-story","status":"publish","type":"post","link":"https:\/\/www.nuonsoft.com\/blog\/2020\/12\/28\/book-c-lambda-story\/","title":{"rendered":"Book &#8220;C++ Lambda Story&#8221;"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"alignright size-large\"><img decoding=\"async\" src=\"https:\\\\www.nuonsoft.com\\images\\blog\\cpp_lambda_story.png\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>A friend of mine published a new book, titled <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/leanpub.com\/cpplambda\" target=\"_blank\">&#8220;C++ Lambda Story&#8221;<\/a><\/strong>. The book explains everything you need to know about lambda expressions in C++.<\/p>\n\n\n\n<p>The book guides you through the evolution of C++ Lambda Expressions so that you can learn it step by step. It starts with C++03 and a motivation to have &#8220;ad-hoc&#8221; functors, and then moves into the latest C++ standards:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>C++11 &#8211; early days of the feature. You&#8217;ll learn about all the essential aspects of lambdas and several tricks you might apply. This is the longest chapter as it needs to cover a lot of topics.<\/li><li>C++14 &#8211; updates. See how to use generic lambdas and captures with an initializer.<\/li><li>C++17 &#8211; more improvements, especially by handling &#8216;this&#8217; pointer and allowing &#8216;constexpr&#8217;. You&#8217;ll also learn about the overloaded pattern and how to derive from lambda.<\/li><li>C++20 &#8211; in this section you&#8217;ll see all of the new features adopted for C++20 like template lambdas and how to use them with concepts and constexpr algorithms.<\/li><\/ul>\n\n\n\n<p>Additionally, throughout the chapters, you&#8217;ll learn about the following techniques:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Immediately Invoked Functional Expressions (IIFE)<\/li><li>How to instrument a default functor to gather extra information<\/li><li>Replacing std::bind1st, std::bind2nd and removed functional stuff<\/li><li>The Overloaded Pattern and how to inherit from a lambda<\/li><li>Passing C++ captureless lambda as a function pointer to C API<\/li><li>LIFTING with lambdas<\/li><li>Storing lambdas in a container<\/li><li>Variadic templates and arguments packs<\/li><li>Lambdas and asynchronous execution<\/li><li>and many more<\/li><\/ul>\n\n\n\n<p>The author, Bart\u0142omiej Filipek, is giving a <strong>28% discount <\/strong>to readers of my blog. This offer is valid until <strong>27th of January 2021<\/strong>.<br><strong><a rel=\"noreferrer noopener\" href=\"https:\/\/leanpub.com\/cpplambda\/c\/marcblog\" target=\"_blank\">Follow this link to use the coupon<\/a><\/strong> if you are interested in this offer.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A friend of mine published a new book, titled &#8220;C++ Lambda Story&#8221;. The book explains everything you need to know about lambda expressions in C++. The book guides you through the evolution of C++ Lambda Expressions so that you can learn it step by step. It starts with C++03 and a motivation to have &#8220;ad-hoc&#8221; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[116,112,202,222,242],"class_list":["post-2015","post","type-post","status-publish","format-standard","hentry","category-c","tag-book","tag-c11","tag-c14","tag-c17","tag-c20"],"_links":{"self":[{"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/posts\/2015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=2015"}],"version-history":[{"count":6,"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/posts\/2015\/revisions"}],"predecessor-version":[{"id":2028,"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/posts\/2015\/revisions\/2028"}],"wp:attachment":[{"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=2015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/categories?post=2015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nuonsoft.com\/blog\/wp-json\/wp\/v2\/tags?post=2015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}