Take a look at "The art and science of programming" by Donald Knuth, it's examples are in Pascal but if you inhale the wisdom in the book you will understand when I say that the language it uses is irrelevant.
Just in case this confuses the submitter, the actual title is "The Art of Computer Programming". And IIRC the code examples aren't in Pascal, but rather in "MIX" assembly, which is a hypothetical language for a hypothetical machine. Also, be forewarned that it has a steep learning curve...
Not sure if I'm missing the joke here (if so, apologies), but just because the book title is "Exceptional C++" doesn't mean the whole thing is about exceptions.
Exceptions are covered for a few chapters in that book, but some of the recommendations aren't really relevant anymore; C++11 deprecated many of the problematic parts of exceptions (e.g. exception specifications), and much like valarrays, no one really used them anyways
My normal rules of thumb are: - No operator overloading, especially type casts. - Templates are mostly used for container classes, or in rare cases algorithms. - Spare use of method/function overloading. - Try to use template parameters that are themselves of as simple of a type as is practical.
Some operators shouldn't be overloaded (e.g. &, && and ||), but good luck writing any non-trivial container classes without overloading the assignment operator. You may think you're not overloading these, but the compiler is simply auto-generating them for you since you didn't provide one (namely, copy-assignment operator and move-assignment operators). As with any language feature it can be abused, but they can be quite useful when used judiciously. (i.e. if you're writing a Matrix library, you'll probably want to overload the arithmetic operators).
It's true that there are pitfalls to using templates, but I think you're grossly overstating their dangers (while ignoring all their benefits). You can do some pretty amazing things with templates; in the least they reduce code duplication, and at best they allow compile-time polymorphism, better error detection, and a whole different paradigm for using C++ (metaprogramming can pretty closely resemble functional programming).
In a word, C++ has the best binding support for GPGPU.
Both CUDA and OpenCL started off as C-based API -- CUDA has since moved to C++, and is moving towards more modern, idiomatic C++, both for its host-side API and device-side code (e.g. has support for kernel templates). OpenCL is a bit behind in this respect, although it also has both C and C++ bindings. You can also use fortran, but the majority of use-cases for GPGPU work is C++, and will be for the foreseeable future.
OpenCL and CUDA both do have other bindings (off the top of my head,
Features are added and behavior is changed for the sake of changing, with no benefits to any software quality whatsoever.
Spoken like someone who doesn't know what they're talking about.
No benefits to software quality? Point out any new feature in C++11 that was added that didn't have a reason. (I would be very interested in fact, as I can't think of any off-hand); the newly added features are done with specific problems in mind. They might not be the problems that YOU encounter, but someone else has.
Those with odd-numbered plates lucked out; apparently they've already discontinued the practice, after having issued roughly 4000 tickets.
One especially pertinent quote from the linked article: ""I know it's not great to say it but I'm willing to take my car and pay the fine to get my kids to school, because I don't have the choice," one woman told the TV network."
It is better to never have tried anything than to have tried something and failed. - motto of jerks, weenies and losers everywhere