{"id":718,"date":"2015-06-12T02:28:05","date_gmt":"2015-06-12T06:28:05","guid":{"rendered":"http:\/\/www.rfdm.com\/blog\/?p=718"},"modified":"2015-08-20T21:40:50","modified_gmt":"2015-08-21T01:40:50","slug":"c11c14-books-now-on-my-shelf","status":"publish","type":"post","link":"https:\/\/www.rfdm.com\/blog\/?p=718","title":{"rendered":"C++11\/C++14 books now on my shelf"},"content":{"rendered":"<p>Over the last year or two, I&#8217;ve been using more of the features introduced in C++11 and C++14.  I&#8217;m a bit behind the curve only due to not being able to live on the bleeding edge with my compilers.  Having an OS X desktop and laptop, I can use a non-Apple version of clang++ but it&#8217;s quirky and doesn&#8217;t always get along with what&#8217;s included in Xcode.  The situation on my FreeBSD servers is similar but not as troublesome.<\/p>\n<p>Back on topic&#8230; I wanted a book or two covering some of the details of C++11\/C++14 features that I&#8217;ve either not used or have only touched upon without fully knowing the consequences.  Things like <tt>auto<\/tt>, <tt>override<\/tt> and range-based for loops are fairly straightforward to use with few hidden consequences (though they have a few constraints that can feel a little odd at first).  Lambdas are a little tricky but mostly only in the constraints with the capture list (until you&#8217;ve read about them).  But some topics can be tricky to completely absorb.  Move semantics, rvalue references and perfect forwarding would be typical examples for most of us.  For those who&#8217;ve not done any concurrency programming, consider yourself lucky that C++14 is here; standardized facilities means you&#8217;ll be able to avoid the headaches that many of us have had to deal with over the last 15 years when needing threads on various platforms.  And while I&#8217;ve been writing multithreaded code for a very long time, I appreciate the cleanliness of the new C++ facilities.<\/p>\n<p>For the areas where I&#8217;m still hazy or worse, I chose Scott Meyers&#8217; <A href=\"http:\/\/www.amazon.com\/gp\/product\/1491903996\">Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14<\/a>.  In general you can&#8217;t go wrong with a C++ book from Scott Meyer, and this one appears to be no exception.  While I just received it yesterday and hence haven&#8217;t had time to dig in, an initial skimming leads me to believe this may be his best book to date.<\/p>\n<p>I also bought Bjarne Stroustrop&#8217;s <A href=\"http:\/\/www.amazon.com\/gp\/product\/0321958314\">A Tour of C++<\/a>.  Eventually I&#8217;ll update my copy of his <i><b>The C++ Programming Language<\/b><\/i>, but it&#8217;s pricey and the reviews of the printing\/binding aren&#8217;t great.  I still cherish my Special Edition version despite it being obsolete, in no small part because it&#8217;s a well-bound hardcover.  At any rate, <i><b>A Tour of C++<\/b><\/i> looks like a nice brief tour of C++, including C++11 features.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the last year or two, I&#8217;ve been using more of the features introduced in C++11 and C++14. I&#8217;m a bit behind the curve only due to not being able to live on the bleeding edge with my compilers. Having an OS X desktop and laptop, I can use a non-Apple version of clang++ but &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.rfdm.com\/blog\/?p=718\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;C++11\/C++14 books now on my shelf&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-718","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=718"}],"version-history":[{"count":4,"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/718\/revisions"}],"predecessor-version":[{"id":759,"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/718\/revisions\/759"}],"wp:attachment":[{"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rfdm.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}