As scientific and engineering projects grow larger and more complex, it is increasingly likely that those projects will be written in C++. With embedded hardware growing more powerful, much of its software is moving to C++, too. Mastering C++ gives you strong skills for programming at nearly every level, from “close to the hardware� to the highest-level abstractions. In short, C++ is a language that scientific and technical practitioners need to know. Peter Gottschling’s Discovering Modern C++ is an intensive introduction that guides you smoothly to sophisticated approaches based on advanced features. Gottschling introduces key concepts using examples from many technical problem domains, drawing on his extensive experience training professionals and teaching C++ to students of physics, math, and engineering. This book is designed to help you get started rapidly and then master increasingly robust features, from lambdas to expression templates. You’ll also learn how to take advantage of the powerful libraries available to C++ both the Standard Template Library (STL) and scientific libraries for arithmetic, linear algebra, differential equations, and graphs. Throughout, Gottschling demonstrates how to write clear and expressive software using object orientation, generics, metaprogramming, and procedural techniques. By the time you’re finished, you’ll have mastered all the abstractions you need to write C++ programs with exceptional quality and performance.
A very interesting book for people interested in advanced C++ programming for scientific and engineering applications. It contains a lot of quite advanced stuff, I will not suggest it for beginners: you'd better have already a basic knowledge of the language. There is a quick introduction to C++, but more useful for reference than for learning. Indeed the focus of the book is more to present C++ programming technique useful in the context of scientific programming (but not only for scientific programming!). A book you should have if you are interested in modern scientific computing with c++.
Really goes into introductory-intermediate level features of C++, while giving a teaser into the more advanced features like expression templates. This is all done while using C++ good practices in the context of developing performant/maintainable scientific software.