Clang ( http://clang.llvm.org/ ) is a front end for a compiler of CeeLanguage, ObjectiveCee and CeePlusPlus. It is a part of the LLVM (LowLevelVirtualMachine) project.
This WikiPedia article gives an introduction to the Clang and why it exists: http://en.wikipedia.org/wiki/Clang
There is a searchable version of the development message list at http://news.gmane.org/gmane.comp.compilers.clang.devel
Version 3.4 and later make significant progress to implementation of c++14 (formerly c++1y see CeePlusPlusOneWhy).
For download details see the LowLevelVirtualMachine page.
As well as providing an alternative tool chain to the GnuCompilerCollection it also provides StaticCodeAnalysis tools.
There is an experimental version of Clang called ConceptClang which is working on implementing CppAndConcepts replacing ConceptGcc.
See TooFewTemplateParameterLists for an example of the improved error messages compared to GnuCpp.
The error messages have really helped me on several occasions. I have been able to sort out a couple of bugs which had been in some code for a long time. -- JohnFletcher
I have just found a really useful article on UndefinedBehavior in CeeCeePlusPlus and how Clang deals with the issues. See WhatEveryCeeProgrammerShouldKnow -- JohnFletcher
The underlying activity in Clang is to turn the input source code into an AbstractSyntaxTree (AST) representation. There is a tutorial on this at http://amnoid.de/tmp/clangtut/tut.html (somewhat dated and referring to an earlier stage of the Clang work). -- JohnFletcher
I thought that having a good compiler such as Clang was going to be a great benefit. So it is most of the time. I have been using it on some old code and found some old errors which is very good. Now as I am working through some more of the errors I have found something which had been below my radar and is a consequence of the new standard for CeePlusPlus (see CeePlusPlusEleven) and it breaks some of my code in a way I cannot see an easy way to fix. I suppose I should be grateful to Clang and the authors. My code is broken. See ImplicitlyDeletedCopyConstructor.
The above was how it felt to me a couple of days ago. What I have found out since is very interesting and worthwhile to put here to guide others.
Another lesson is only to report bugs when I am sure what they are and where they are.
The eventual solution to these problems has been to update my UbuntuLinux from 10.04 to 12.04, another long term support version. This gives me gcc 4.6 which has libraries which will also work with Clang 3.2 even with C++11. This is helpful as I have a number of libraries which I have never managed to get working with Clang.
-- JohnFletcher