Wednesday, July 22, 2009

Episode Four: Not Enough Keys in the Keyboard

The basic character set of the C programming language is a subset of the ASCII character set that includes nine characters which lie outside the ISO 646 invariant character set. Trigraphs were invented as a way of entering source code using keyboards that support any version of the ISO 646 character set.

Monday, July 20, 2009

Breaking News: Concepts are out

Beman Dawes posted earlier today at the Boost Developers Mailing List:
The C++ standards committee met in Frankfurt, Germany, last week. Key actions:

* Concepts have been removed from C++0x.

The committee is very much in favor of Concepts. But Concepts are seen as so important that they have to be right. And the strong consensus was that getting Concepts right, for any reasonable definition of "right", would add several years to the schedule. There was also a consensus that an implementation of a compiler that could compile the entire standard library is part of the definition of "right". While ConceptGCC has been a great help, it isn't there as far as validating "right". Personally, I think Clang may end up being the compiler that eventually validates Concepts.

(...)
We'll have to keep waiting...

Saturday, July 18, 2009

Episode Three: Friends with Benefits

Friendship is a special relation among classes in C++. A friend of a class is a function or class that is given access to its private (and protected) parts.

Friday, July 17, 2009

Episode Two: Those Whose Names must not be Spoken

The C++ standard reserves a set of names for use by C++ implementation and standard libraries [C++ standard 17.6.3.3 - Reserved names]. Those include but are not limited to:

- Names containing a double underscore.
- Names that begin with an underscore followed by an uppercase letter.
- Names that begin with an underscore at the global namespace.

Wednesday, July 15, 2009

Episode One: To be or not to be const

Const-correctness is the form of program correctness that deals with the proper declaration of objects as mutable or inmutable. It dictates that all objects should be declared as const unless they need to be modified. It results in clearer, easier to follow code.