ConceptGCC is a fork of the GNU C++ compiler that implements a preliminary version of the type concepts feature, originally planned for the last ISO standard for the C++ programming language C++11, at that time known as C++0x. Concepts were removed from C++11 in July 2009. Developed by a team led by Douglas Gregor (co-author, along with Bjarne Stroustrup, of the C++11 concepts proposal (N2081)) at the Open Systems Laboratory at Indiana University, ConceptGCC serves as the current reference implementation for the proposal. Both the proposal and ConceptGCC are actively evolving, and are maintained more-or-less in parallel. The current version of ConceptGCC is considered an alpha release, and as such should be considered highly experimental.
The version of C++ implemented by ConceptGCC is known as ConceptC++. Until (or unless) the concepts proposal is included in the finalized new standard, ConceptC++ must be considered an experimental extension to standard C++. As the new standard solidifies, it is planned that the ConceptGCC extensions will be merged back into mainline GCC, initially (for GCC 4.3) as an optionally enabled extension, and then eventually as part of its implementation of standard C++.
In addition to type concepts, ConceptGCC also incorporates GCC patches implementing several other planned C++11 features, including:
- RValue references
- Variadic templates (see also Variadic Templates main article)
- Static assertions
- Range-based for loops
- InformIT: The Removal of Concepts From C++0x
- “At this meeting [of Committee, Frankfurt, July 2009], Concepts, the major feature of C++ 0x, which enables constrained genericity, or template argument prototyping, has been removed from the C++0x draft.” Michael Wong, the IBM and Canadian representative to the C++ Standard and OpenMP Committee. The View (or trip report) from the July 2009 C++ Standard meeting