C++11 (Final ISO ballot closed Wednesday, August 10th, 2011: Unanimous approval)
What's New in C++11? A live webinar I presented for DevelopMentor on Dec 6th, 2011
Bjarne Stroustrup's C++11 FAQ
Scott Meyers' Summary of C++11 Feature Availability in gcc and MSVC
Wikipedia C++11 page
JTC1/SC22/WG21 - The C++ Standards Committee web headquarters
C++11 Draft Standard (Direct PDF link, Working Draft dated 2/28/2011)
Elements of Modern C++ Style - Herb Sutter's "living document" on the most impactful new C++11 features
Going Native 2012 - 2-day C++11 conference being held Feb 2-3, 2012 at Microsoft in Redmond, WA. $112 for two days of talks with Sutter, Stroustrup, Alexandrescu et al., food included...and a party! Even if you can't attend live, the sessions will be available for free streaming within 24 hours of presentation.
C++ and Beyond Super high-quality, high-end conference series presented by Scott Meyers, Herb Sutter and Andrei Alexandrescu once or twice per year at various pleasant locations. I attended the August 2011 version in Banff, Canada. Technical conferences just don't get any better than this.
Concurrency
Multithreading in C++0x Nice 8-part (so far) tutorial introduction to concurrency by Anthony Williams
C++11 Concurrency Series Methodical video tutorial (9 parts so far) by Bartosz Milewski
C++ Concurrency in Action Anthony Williams' seminal book on C++11 concurrent programming.
Async Tasks in C++11: Not Quite There Yet Insightful article by Milewski
just::thread Complete C++ Standard Thread Library Drop-in library for MSVC and gcc by Anthony Williams. Great support!
Online Multimedia Presentations:
Herb Sutter - Why C++? (Keynote talk from C++ and Beyond 2011)
Herb Sutter - Lambdas, Lambdas, Everywhere
Herb Sutter: Writing modern C++ code: how C++ has evolved over the years
OnSoftware - Bjarne Stroustrup & Herb Sutter on the Future of C++ (5/21/08): Part 1 Part 2
Lawrence Crowl and Matt Austern: An Overview of the Coming C++ (C++0x) Standard
Doug Gregor: Concepts Extending C++ Templates For Generic Programming
Bjarne Stroustrup: C++0x Initialization Lists
Lawrence Crowl: C++ Threads
Scott Meyers @ NWCPP: Red Code/Green Code - Generalizing Const
Herb Sutter @ NWCPP: Machine Architecture: Things Your Programming Language Never Taught You
Design and Evolution of C++: Bjarne Stroustrup and Herb Sutter (short interview)
Bjarne Stroustrup: High Performance Applications with C++ (short interview)
Individual C++ sites of note:
Ever wonder what language the world-class software products are written in? This page lays it all out, including the evolutionary path taken by projects such as Windows, Linux, Office, MySQL, etc. Note the large number of entries in the "C++" column...
Scott Meyers' C++11 (formerly C++0x) Feature Availablity in gcc and MSVC page. Make sure to notice the tabs at the bottom of the page! That's where the info is! Great way to track C++11 support in the major compilers.
C++11 Features in Visual C++ 11 - Baby steps. Baby steps (But, still no range-based 'for' in VC11? Sigh.)
Scott Meyers' TR1 Information page. Includes articles on TR1 in general, links to all the proposal documents describing the rationale and interface of the various TR1 components, and some ways to get TR1 functionality right now rather than having to wait for your platform's vendor to supply it.
Herb Sutter's Blog: Essential reading if you want to keep up with what's going on in C++ language and library evolution. Herb's the chair of the ISO C++ Standards Committee, and he dutifully reports on what the commitee's voted into the standard after each meeting. Herb's also established himself as the concurrency guru with a current series of articles in DDJ on the topic (links for all the articles show up in the blog with the release of each new one.)
Twilight Dragon Media (TDM) gcc Windows-resident C++ environment: After several days of Googling in search of a gcc port (including support for the -D_CLIBGXX_DEBUG debugging STL mode) that runs under XP, I finally came across this native Windows command-line MinGW-based gcc C++ platform that works.There's now a streamlined installer, and for the most part, everything just works "out of the box"...no header file issues.
Boost: The
incubator for C++ Standard Library components, more or less. Boost is a repository
of community-developed, peer-reviewed C++ libraries. Several of the founders/activists
are on the Standard Committee's Library Working Group. Do the
math...
Generic Programming: Ground zero for the "Concepts" feature of some (hopefully) future version of C++. Concepts allow the compiler to diagnose type mismatches during template specialization with messages that are comprehensible, unlike the current pre-Concepts scenario. See STLFilt). A Concepts-enabled version of the gcc C++ compiler and Standard Library is available for experimentation here.
Microsoft
Visual Studio Express Editions: Download Microsoft's latest C++ compiler, including IDE,
for free!
The
C++ Annotations: A wonderfully comprehensive, mature and very
readable HTML-based C++ learning resource by Dr. Frank B Brokken
of the University of Groningen, The Netherlands. It does assume
the reader already has a strong C background.
Comeau
Computing: For $50, you can get yourself an honest-to-goodness
Standard C++ compiler...along with built-in hooks for STL Error
Decryption [my favorite feature ;-) ] and exceptional support
from Comeau. A cool feature of the Comeau Computing web site is
their Online
Compiler, where you can paste in C++ code and compile it on
the spot to test for Standard conformance.
Visual
C++ Tips and Tricks: Tips on making the use of MSVC a bit
more pleasant.
Scott Meyers'
Site: Author of the seminal Effective C++ book series and an all-star speaker on C++.
Dan Saks' Site:
Not only is Dan Saks an expert on all things C/C++, a former secretary
of the ISO C++ Standards Committee and the leading educator on
the use of C and C++ in the context of embedded systems....he's
also a really, really nice guy. Most of my understanding of the
motivation behind the design of C++ comes from Dan.
Steve Dewhurst's
Site: Steve's the author of the excellent recent books C++ Gotchas and C++ Common Knowledge (as well as of the Advanced C++ course I offer.)
MinGW:
Minimalist GNU for Windows: "A collection of freely available
and freely distributable Windows specific header files and import
libraries combined with GNU toolsets that allow one to produce
native Windows programs that do not rely on any 3rd-party DLLs."
And, finally, it comes with an honest-to-goodness self-contained
self-installer: Go to the SourceForge download page, then locate "Automated MinGW Installer".
Dev-C++:
A free IDE for C/C++ development. Very full-featured and elegant.
The distribution comes with gcc 3.2 built in, so you can install
Dev-C++ and use the IDE or just use gcc from the command line
afterwards.
Digital
Mars C++ Compiler: The latest incarnation of Walter Bright's
C++ compiler (the first commercial native-code C++ compiler that
ran on PCs, earlier known as Zortech C++), now available as a
free download.
wxWidgets:
(formerly wxWindows): A free C++ framework for cross-platform
GUI development. I used it to create the STLTask utility that
is part of my STL Error Decryptor package (see below). While that
particular app only has to run under Windows, it was still more
intuitive to develop than an MFC app...and wxWidgets lets you
write a GUI app once so that it runs under Windows, Unix, whatever.
Now that's cool.
C++
Resources at thefreecountry.com: Links to all the free C/C++
compilers available on the web, collected in one place. Did you
know Microsoft is giving their Visual C++ command-line compiler
away for free??
Free
Compilers and Interpreters from Freeware-Guide.com. Many free
compilers, some open-source, for several different languages.
(Both this and the previous site even list BDS
C!)
Must-Have Books:
The C++ Standard Library: A Tutorial and Reference, Nicolai Josuttis, Addison-Wesley, 1999, ISBN 0-201-37926-0. Indispensable desk reference for the entire Standard Library, with many complete programming examples using the library facilities. Don't code STL without it!
Effective C++, Third Edition: 55 Specific Ways to Improve Your Programs and Designs, Scott Meyers, Addison-Wesley, 2005, ISBN 0-321-33487-6. Latest revision of Scott's seminal "2nd book" on C++ (that is, the book to read after you learn the basics of the language.) It just gets better with age.
C++ Coding Standards, Herb Sutter and Andrei Alexandrescu, Addison-Wesley, 2005, ISBN 0-321-11358-6.
More Effective C++: 35 New Ways to Improve Your Programs and Designs, Scott Meyers, Addison-Wesley, 1996, ISBN 0-201-63371-X.
Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library, Scott Meyers, Addison-Wesley, 2001, ISBN 0-201- 74962-9. STL-specific "Effective" book. Again, assumes you've learned the fundamentals of the STL, and then takes you to the next level. I did the code testing for this book, and have the companion code archive available for download here.
Exceptional C++, Herb Sutter, Addison-Wesley, 2000, ISBN 0-201- 61562-2.
More Exceptional C++, Herb Sutter, Addison-Wesley, 2002, ISBN 0- 201-70434-X.
Exceptional C++ Style, Herb Sutter, Addison-Wesley, 2005, ISBN 0- 201-76042-8.
C++ Gotchas: Avoiding Common Problems in Coding and Design, Steven Dewhurst, Addison-Wesley, 2003, ISBN 0-321-12518-5.
C++ Common Knowledge: Essential Intermediate Programming, Steven Dewhurst, Addison-Wesley, 2005, ISBN 0-321-32192-8.
Thinking
in C++, 2nd Edition: Bruce Eckel makes this excellent two
volume set (including the awesome Volume II, co-authored with Chuck
Allison) available as a free download.
Bruce's entire site is worth visiting; all of his books (including ones on Java, patterns
and Python) are similarly available for free. In this particular
case, you get a whole lot more than what you pay for...
Modern C++ Design: Generic Programming and Design Patterns Applied, Andrei Alexandrescu, Addison-Wesley, 2001, ISBN 0-201-70431-5.
Other Very Useful Books:
C++ Concurrency in Action Anthony Williams' seminal book on C++11 concurrent programming.
C++ Templates: The Complete Guide, David Vandevoorde and Nicolai Josuttis, Addison-Wesley, 2003, ISBN 0-201-73484-2.
Beyond the C++ Standard Library: An Introduction to Boost, Björn Karlsson, Addison-Wesley, 2006, ISBN 0-321-13354-4.
C++ Template Metaprogramming, David Abrahams and Aleksey Gurtovoy, Addison-Wesley, 2005, 0-321-22725-5.
The C++ Standard Library Extensions, Pete Becker, Addison-Wesley, 2007, ISBN 0-321-41299-0.
Standards and Standardization-Related:
C++
Standard: The official distribution site for the 1998 final
C++ Standard document. Accept no substitutes.
C++
Standardization Status: Nice overview (this was some kind
of slide presentation) of Standardese terms, pending activity,
feature summaries, etc. (see also Herb Sutter's blog, described above, for late-breaking standarization news.)
Reference and FAQ Sites:
Incompatibilities
between ISO C and ISO C++: Nice resource, maintained by David
R. Tribble.
Predefined
C/C++ Compiler Macros: I wish I'd known about this site before
attempting some recent work on my InitUtil
library, because it would have saved me an awful lot of time and
trouble.
C/C++ Reference:
Sweet, simple, well-organized site for C and C++ language and
library reference information. They provide a packaged, downloadable
version as well. As they say themselves on the last line of the
FAQ: "Think of it as a community service, for geeks."
Still waiting for an "Algorithms" section, though...
C++
FAQ Lite - The official comp.lang.c++ FAQ. Great info about
everything C++: language, online community netiquette, technical
/ environmental issues, etc. etc.
Tech
Talk about C++ and C: Nice FAQ from Comeau Computing.
Bjarne
Stroustrup's C++ Style and Technique FAQ: The name says it
all
Dinkum
C++ Library: On-line C++ Library reference from Dinkumware,
Ltd.
Standard Template Library:
SGI STL Programmer's
Guide
The C/C++ Reference site listed
in the previous section has nice STL information.
STLFilt: An STL
Error Message Decryptor for C++: Tooting my own horn: STLFilt is a collection
of tools that work in conjunction with Comeau C++, gcc (including
within the Dev-C++ IDE), Metrowerks CodeWarrior, Microsoft Visual
C++, Intel C++ and Borland C++ to post-process STL-related error
and warning messages, rendering them comprehensible to non-C++-gurus
via the removal of extraneous fluff. And even some gurus
prefer the messages decrypted...
C++ Link-Fest Sites:
A
Cornucopia of C++ Resources: Excellent descriptions of each
link to good books and documentation.
Sites of interest
to C++ users: Another excellent list of links.
Technomagi
C++ Links: Good selection of STL-related and general C++ /
OOP sites
C-Specific:
Programming
in C: Excellent site for ISO C news, documentation/commentary
and links.
The
Ten Commandments for C Programmers
C
Programming Notes (to Accompany K&R): When I attended
Hebrew school as a kid, we studied the Old Testament, and specifically
the "Rashi", or commentary by some learned old Torah
scholar that appeared side-by-side to the "official"
text. This document, by Steve Summit, is like "Rashi for
K&R", providing insightful commentary to the C Bible
and pointing out the "deep sentence" gems scattered
throughout that venerable tome.
comp.lang.c
FAQ: The Frequently Asked Questions repository for the Usenet
newsgroup.
K&R
Answers to Exercises: A free repository of solutions to most
of the coding exercises in The C Programming Language, 2nd
Edition by Kernighan and Ritchie. Site maintained by Richard
Heathfield.
And an antique: BDS
C was first released in 1979 for CP/M-80 (Intel 8080 CPU,
running at 2MHz with 64K max system RAM - but BDS C could be run
on as little as a 40K system). Try it under the SIMH
Altair simulator.
The D Programming Language:
The
D Programming Language: The brainchild of compiler guru Walter
Bright, D aspires to be successor to both C and C++...and the
strangest thing is, it may actually succeed. I'd describe
D as "The greatest hits of C, C++ and Java, with some additional
original arrangements by Walter Bright". And I think he knows
the score ;-)
Not specifically software development-related, but these Windows
tools have served me awfully well--most for many years--and their
authors have provided me with exemplary tech support whenever
I've needed it:
Acronis True Image Home 2012: This is the backup software I've been using for years. I recently updated it and then immediately used it to clone the dying internal SSD hard drive on my Dell Inspiron notebook to a new external drive plugged into a USB port. When completed, I swapped the new drive in and the system booted/ran flawlessly. This software is a class act.
WordWeb: A free taskbar-resident dictionary/thesaurus utility. Select any
word in any application, click on the "W" icon, and
get instant pop-up definitions and synonyms! Perfect for school-age
kids' systems.
Startup
Control Panel: Have you been frustrated trying to figure out
where RealOne has stealthily installed itself so it obnoxiously
starts up every time with Windows, and with seemingly no way to
disable that feature from its control panel? Get this tool, and
end of problem. Freeware written by Mike Lin, a 19-year-old MIT
student. I was one of those once...no, sorry, I had actually already
withdrawn by the time I turned 19... Anyway, make a contribution
to his cookie jar and help with tuition ;-)
Epsilon Text
Editor: This is a commercial package, but IMHO the best implementation
of EMACS in existence. Now, how often do you run into a commercial
package where the author personally answers every technical question
you email to tech support, and answers his own phone? I did it
back in 1980 while supporting BDS C, but today it is truly a rare
thing to find in as high-quality a commercial product as this.
ExamDiff
Pro: Excellent file comparator utility. The first graphical
app I've found good enough to wean me off the DOS-based character
mode tool I'd been using for years.
JP Software:
Home of TCC (formerly 4DOS and 4NT), powerful replacement command processors
for Windows for those of us who can't quite get used to doing
certain administrative and development tasks using a WIMP interface
(Windows, Icons, Menus and Pointers)...and also can't stand the
limitations of standard DOS/Windows batch scripting support. Crafting
complex regression testing scripts for my STL Error Decryptor
was a pleasure under 4NT...and would've been impossible using
the native Windows command processors.
TaskInfo:
Incredibly comprehensive Windows task monitoring utility. Want
to know what files are being held open by what process? Want to
terminate a process in less time than it sometimes takes Task
Manager to just wake up? Try this.
Teleport
Pro: Copies an entire web site onto your own machine, and
updates it later on very conveniently. I use this to snag the
CUJ
Experts Forum articles onto my machine for later perusal.
SnagIt!:
Screen-cap utility that just about does it all.
HP-16c emulator: WRPN, written
by Emmet P. Gray, is a public domain calculator for Microsoft
Windows that is modeled after the Hewlett-Packard HP-16c. I use
a real HP-16c for everything (the first set of batteries
lasted about 15 years). I was overjoyed to discover this emulator,
so my beloved calculator could be with me, virtually, anywhere,
while at the same time remaining safe and sound on my office desk!
(Note: the emulator doesn't support the calculator's programming
features, but then, I've never learned to use them on my own real
16c anyway...)
Fix
Sort Order: A registry mod to restore sane sort ordering to
Windows XP File Open/Save Dialogs. I don't know what messes the
order up in the first place, but I searched high and low for a
solution until I found this little utility. Part of a great Windows
tip site, Doug's
Windows Tweaks and Tips.
Windows XP
Update: Full of great XP support information. When "Windows
Update" kept bombing on my XP Home system, this
is where I found the solution (Step 6, making sure the IE language
setting wasn't blank, did it for me!)
All text and images on this website are Copyright © 2001-2003 BD Software.
All rights reserved.