Archive for April, 2007

Wanted: Doxygen Hacker

April 24, 2007

Doxygen is a great tool for turning C++ code and comments into reference documentation. We would absolutely love to use Doxygen in the ConceptGCC standard library, and in other libraries that are using Concepts in C++, but there’s one big snag: Doxygen doesn’t parse concepts, or requirements clauses, or any of the new constructs introduced into C++0x.

We’re looking for someone willing to implement C++0x support into Doxygen, so that we can produce great reference documentation automatically for ConceptC++ code. Having this functionality would be a huge benefit for C++0x and concepts. Any takers?

Variadic Templates are in C++0x

April 24, 2007

Variadic templates have now been accepted into C++0x and will be in the next C++0x working paper. Variadic templates have the distinction of being the only C++0x feature that has made it completely through the Core Working Group and into the working paper within a single committee meeting.

Variadic templates are implemented in ConceptGCC alpha 6 and in the experimental C++0x mode in GCC 4.3.

Concepts Go “To Core”

April 18, 2007

The Evolution Working Group of the ISO C++ committee just voted the main concepts proposal “to core”, with two minor additions:

* We will add a built-in concept BaseOf
* We will add concept map friends

Moving “to core” means that concepts will go into C++0x as soon as the formal wording is agreed upon. This process could take a while, but at this point it is unlikely that any significant details will change.

Two add-on proposals were discussed.

1) Jeremy Siek proposed scoped concept maps (committee document N2098). The Evolution Working Group is strongly in favor of this feature (votes: 15-10-0-0-0, for those that like to track such things).

2) Bjarne Stroustrup and Gabriel Dos Reis proposed the reintroduction of || constraints (N2221). The Evolution Working Group is against this feature (votes: 1-5-3-8-9).

Update: The Evolution Working Group decided to use ‘&&’ to separate concepts in the a requirements clause, instead of using ‘,’ as in the latest proposal and ConceptGCC.

ConceptGCC 4.3.0 Alpha 6 is now available

April 11, 2007

ConceptGCC is a prototype implementation of the Concepts language
feature for C++0x, which offers improved type-checking for C++
templates and complete support for the Generic Programming paradigm.

ConceptGCC 4.3.0 alpha 6 provides many improvements over previous
versions of ConceptGCC, including support for the concept syntax introduced by the
latest concepts proposal, N2193, along with support for many other
C++0x features, such as:
– Rvalue references
– Right angle brackets
– Default template arguments for function templates
– Delegating constructors
– decltype
– Static assertions
– C99 preprocessor
– Variadic templates
– Range-based for loop

Source code and pre-compiled binaries for various platforms are
available on the ConceptGCC download page at:

http://www.generic-programming.org/software/ConceptGCC/download.php

For more information about concepts, please see:

http://www.generic-programming.org/languages/conceptcpp/

Concepts at ACCU and BoostCon

April 5, 2007

There are two upcoming concepts tutorials where you can learn all about concepts and how they fit into C++.

The first will be a 90-minute tutorial at ACCU 2007, on April 14th in Oxford, UK. This tutorial will cover all of the basics of writing concepts, using concepts to constrain templates, and writing concept maps.

The second will be a half-day, hands-on tutorial at BoostCon 2007. We’ll start from the concept basics, and build a miniature STL-like library from the ground up using concepts. BoostCon will also have a second, more advanced tutorial on taking an existing C++ template library and evolving it to use concepts, with particular focus on making the library work both with and without concepts. Early registration is open for just four more days. Come join in the fun!