C++Builder XE3 includes 3 C++ compilers: bcc32.exe (32-bit Windows), bccosx.exe (32-bit Mac OS X) and bcc64.exe (64-bit Windows). BCC32’s C++0x language enhancements were first added in C++Builder 2009. C++Builder XE3’s new C++11 64-bit Windows compiler supports the same C++11 language standard as the clang compiler (version 2.9, 3.0 and 3.1). The following is a list of C++11 language features that are supported in all three C++Builder XE3 compilers (command line and integrated compilers). Note: the list is subject to change based on the release and update/hotfix builds - please refer to the Embarcadero DocWiki which will always have the latest information and documentation.
C++ Language support by compiler
The following is a partial listing of the C++ 0x and C++11 language support included in the bcc32, bccosx and bcc64 compilers. I will keep updating this list until it contains all of the C++11 standard items and Yes/No/Partial support for each compiler.
|Initialization of class objects by rvalues||No||No||Yes|
|Non-static data member initializers||No||No||Yes|
|New function declarator syntax||No||No||Yes|
|Declared type of an expression||Yes||Yes||Yes|
|Incomplete return types||No||No||Yes|
|Right angle brackets||No||No||Yes|
|Default template arguments for function templates||No||No||Yes|
|Solving the SFINAE problem for expressions||No||No||Yes|
|Null pointer constant||No||No||Yes|
|Forward declarations for enums||Yes||Yes||Yes|
|Generalized constant expressions||No||No||Yes|
|Explicit conversion operators||Yes||Yes||Yes|
|New character types||Yes||Yes||Yes|
|Unicode string literals||No||No||?|
|Raw string literals||No||No||Yes|
|Universal character name literals||?||?||?|
|Standard Layout Types||?||?||?|
|Defaulted and deleted functions||No||No||Yes|
|Extended friend declarations||No||No||Yes|
|Local and unnamed types as template arguments||No||No||Yes|
|Explicit virtual overrides||No||No||Yes|
|Minimal support for garbage collection and reachability-based leak detection||No||No||?|
|Allowing move constructors to throw [noexcept]||No||No||Yes|
|Defining move special member functions||No||No||?|
|Concepts [not part of C++11]||No||No||No|
|Strong Compare and Exchange||No||No||?|
|Data-dependency ordering: atomics and memory model||No||No||No|
|Abandoning a process and at_quick_exit||No||No||No|
|Allow atomics use in signal handlers||No||No||?|
|Dynamic initialization and destruction with concurrency||No||No||No|
|C99 Features in C++11|
|__func__ predefined identifier||No||No||No|
|Extended integral types||No||No||No|
Comparisons with other C++11 compilers
There is documentation on the internet for several C++ compilers that lists the C++11 compatibility results for current and past releases. I make no claim to the quality or completeness of the C++11 language compliance for any compilers. I include the links so that you can do your own investigations and comparisons.
- C++0x / C++11 support in GCC - http://gcc.gnu.org/projects/cxx0x.html
- C++98 / C++11 support in Clang - http://clang.llvm.org/cxx_status.html
- C++11 features in MS Visual C++ 11 - http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
- C++0x support in bcc32 and bccosx - http://docwiki.embarcadero.com/RADStudio/XE3/en/C%2B%2B0x_Features_Index
- C++11 support in bcc64 - http://docwiki.embarcadero.com/RADStudio/XE3/en/C%2B%2B11_Features_(BCC64)
I am working with our R&D, Q/A and Product Management team to create a document and site where you can explore the C++11 language compliance results based on our testing using the Plum Hall C++ validation suite (stay tuned in January for additional details).
Watch/Download the C++Builder 64-bit Compiler Preview Video
Additional details about the 64-bit C++Builder compiler are available in the preview video. Watch the C++ 64-bit compiler preview video on YouTube at http://www.youtube.com/watch?v=PwwMpBUoR6Y. You can also download the MP4 video file at http://cc.embarcadero.com/item/29197. The preview video is 9 minutes long.
Try the C++Builder 64-bit compiler
The C++Builder XE3 and RAD Studio XE3 free trial downloads have been updated to include the new C++Builder 64-bit compiler. Trial downloads are available at https://downloads.embarcadero.com/free/c_builder
During the first 25 days of December leading up to Christmas, I will blog about the release of the C++Builder 64-bit compiler for Microsoft Windows and C++Builder XE3 support for building VCL and FireMonkey 2 applications.