The 25 days of C++mas - December 22 - C++ standard support in C++Builder 32 and 64 bit compilers
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.
Language Feature | bcc32 | bccosx | bcc64 |
---|---|---|---|
C++ 11 | |||
Rvalue references | Yes | Yes | Yes |
Initialization of class objects by rvalues | No | No | Yes |
Non-static data member initializers | No | No | Yes |
Variadic templates | No | No | Yes |
Initializer lists | No | No | Yes |
Static assertions | Yes | Yes | Yes |
auto-typed variables | No | No | Yes |
Multi-declarator auto | No | No | Yes |
New function declarator syntax | No | No | Yes |
Lambda expressions | 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 |
Template aliases | No | No | Yes |
Extern templates | Yes | Yes | Yes |
Null pointer constant | No | No | Yes |
Strongly-typed enums | Yes | Yes | Yes |
Forward declarations for enums | Yes | Yes | Yes |
Generalized attributes | No | No | No |
Generalized constant expressions | No | No | Yes |
Alignment support | "alignof" | "alignof" | Yes |
Delegating Constructors | No | No | Yes |
Inheriting Constructors | 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 | ? | ? | ? |
User-defined literals | No | No | No |
Standard Layout Types | ? | ? | ? |
Defaulted and deleted functions | No | No | Yes |
Extended friend declarations | No | No | Yes |
Extending sizeof | No | No | Yes |
Inline namespaces | No | No | Yes |
Unrestricted unions | No | No | Yes |
Local and unnamed types as template arguments | No | No | Yes |
Range-based for | 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 |
Concurrency | |||
Sequence points | No | No | No |
Atomic operations | No | No | ? |
Strong Compare and Exchange | No | No | ? |
Bidirectional Fences | No | No | ? |
Memory model | No | No | No |
Data-dependency ordering: atomics and memory model | No | No | No |
Propagating exceptions | No | No | ? |
Abandoning a process and at_quick_exit | No | No | No |
Allow atomics use in signal handlers | No | No | ? |
Thread-local storage | No | No | No |
Dynamic initialization and destruction with concurrency | No | No | No |
C99 Features in C++11 | |||
__func__ predefined identifier | No | No | No |
C99 preprocessor | No | No | No |
long long | Yes | Yes | Yes |
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)
C++11 compliance
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
Happy C++mas!
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.


Comments
-
Vladimir: I just compiled the following statements in a C++Builder VCL application (one TButton) using the C++32-bit compiler in C++Builder XE3 update #1.
int foo()
{
return 11;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
auto x = 10;
auto x1 = foo();
auto y = 3.14;
int i=10;
auto a = 1, *b = &i;
Button1->Caption = IntToStr(*b);
}
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf -
Vladimir - thanks for the notes. You are right that way back in C++Builder 2009 we added some original C++Ox language extensions - http://docwiki.embarcadero.com/RADStudio/XE3/en/C%2B%2B0x_Features_Index. And since then we have not touched the C++ 32-bit compiler. One of our goals is to someday backport the new C++ 64-bit compiler back to 32-bit Windows - no time frame or firm promise yet - but definitely an aspirational goal.
Sorry for the confusion. -
Please login first in order for you to submit comments
- Page :
- 1
David-san
> Raw string literals
bcc64 is YES