forked from OSchip/llvm-project
parent
7ab75b3f68
commit
25b555a6bf
|
@ -645,8 +645,7 @@ C++11 inheriting constructors
|
|||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Use ``__has_feature(cxx_inheriting_constructors)`` to determine if support for
|
||||
inheriting constructors is enabled. Clang does not currently implement this
|
||||
feature.
|
||||
inheriting constructors is enabled.
|
||||
|
||||
C++11 inline namespaces
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -727,6 +726,12 @@ Use ``__has_feature(cxx_static_assert)`` or
|
|||
``__has_extension(cxx_static_assert)`` to determine if support for compile-time
|
||||
assertions using ``static_assert`` is enabled.
|
||||
|
||||
C++11 ``thread_local``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Use ``__has_feature(cxx_thread_local)`` to determine if support for
|
||||
``thread_local`` variables is enabled.
|
||||
|
||||
C++11 type inference
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -818,6 +823,12 @@ Use ``__has_feature(c_static_assert)`` or ``__has_extension(c_static_assert)``
|
|||
to determine if support for compile-time assertions using ``_Static_assert`` is
|
||||
enabled.
|
||||
|
||||
C11 ``_Thread_local``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Use ``__has_feature(c_thread_local)`` to determine if support for
|
||||
``_Thread_local`` variables is enabled.
|
||||
|
||||
Checks for Type Traits
|
||||
======================
|
||||
|
||||
|
|
|
@ -751,6 +751,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
|
|||
.Case("c_atomic", LangOpts.C11)
|
||||
.Case("c_generic_selections", LangOpts.C11)
|
||||
.Case("c_static_assert", LangOpts.C11)
|
||||
.Case("c_thread_local", LangOpts.C11)
|
||||
// C++11 features
|
||||
.Case("cxx_access_control_sfinae", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_alias_templates", LangOpts.CPlusPlus11)
|
||||
|
@ -768,7 +769,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
|
|||
.Case("cxx_explicit_conversions", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_generalized_initializers", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_implicit_moves", LangOpts.CPlusPlus11)
|
||||
//.Case("cxx_inheriting_constructors", false)
|
||||
.Case("cxx_inheriting_constructors", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_inline_namespaces", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_lambdas", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_local_type_template_args", LangOpts.CPlusPlus11)
|
||||
|
@ -782,6 +783,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
|
|||
.Case("cxx_rvalue_references", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_strong_enums", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_static_assert", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_thread_local", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_trailing_return", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_unicode_literals", LangOpts.CPlusPlus11)
|
||||
.Case("cxx_unrestricted_unions", LangOpts.CPlusPlus11)
|
||||
|
|
|
@ -37,6 +37,15 @@ int no_alignas();
|
|||
// CHECK-1X: has_alignas
|
||||
// CHECK-NO-1X: no_alignas
|
||||
|
||||
#if __has_feature(c_thread_local)
|
||||
int has_thread_local();
|
||||
#else
|
||||
int no_thread_local();
|
||||
#endif
|
||||
|
||||
// CHECK-1X: has_thread_local
|
||||
// CHECK-NO-1X: no_thread_local
|
||||
|
||||
#if __STDC_VERSION__ > 199901L
|
||||
int is_c1x();
|
||||
#else
|
||||
|
|
|
@ -272,3 +272,21 @@ int no_local_type_template_args();
|
|||
|
||||
// CHECK-0X: has_local_type_template_args
|
||||
// CHECK-NO-0X: no_local_type_template_args
|
||||
|
||||
#if __has_feature(cxx_inheriting_constructors)
|
||||
int has_inheriting_constructors();
|
||||
#else
|
||||
int no_inheriting_constructors();
|
||||
#endif
|
||||
|
||||
// CHECK-0X: has_inheriting_constructors
|
||||
// CHECK-NO-0X: no_inheriting_constructors
|
||||
|
||||
#if __has_feature(cxx_thread_local)
|
||||
int has_thread_local();
|
||||
#else
|
||||
int no_thread_local();
|
||||
#endif
|
||||
|
||||
// CHECK-0X: has_thread_local
|
||||
// CHECK-NO-0X: no_thread_local
|
||||
|
|
|
@ -37,7 +37,10 @@
|
|||
|
||||
<h2 id="cxx11">C++11 implementation status</h2>
|
||||
|
||||
<p>Clang provides support for a number of features included in the new <a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372">ISO C++ Standard, ISO/IEC 14882:2011</a>. The following table describes which C++11 features have been implemented in Clang and in which Clang versions they became available.</p>
|
||||
<p>Clang implements all of the <a
|
||||
href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372">ISO
|
||||
C++ 2011 standard</a>. The following table describes the Clang version
|
||||
in which each feature became available.</p>
|
||||
|
||||
<p>By default, Clang builds C++ code according to the C++98 standard, with many
|
||||
C++11 features accepted as extensions. You can use Clang in C++11 mode with the
|
||||
|
@ -47,7 +50,8 @@ patches are needed to make <a href="libstdc++4.4-clang0x.patch">libstdc++-4.4</a
|
|||
work with Clang in C++11 mode. Patches are also needed to make
|
||||
<a href="libstdc++4.6-clang11.patch">libstdc++-4.6</a>,
|
||||
and <a href="libstdc++4.7-clang11.patch">libstdc++-4.7</a> work with Clang
|
||||
releases prior to version 3.2 in C++11 mode.</p>
|
||||
releases prior to version 3.2 in C++11 mode. <tt>thread_local</tt> support
|
||||
currently requires g++-4.8's C++ runtime library.</p>
|
||||
|
||||
<table width="689" border="1" cellspacing="0">
|
||||
<tr>
|
||||
|
@ -349,7 +353,7 @@ releases prior to version 3.2 in C++11 mode.</p>
|
|||
<tr>
|
||||
<td>Thread-local storage</td>
|
||||
<td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm">N2659</a></td>
|
||||
<td class="none" align="center">No</td>
|
||||
<td class="svn" align="center">SVN</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dynamic initialization and destruction with concurrency</td>
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
targeting X86-32, X86-64, and ARM (other targets may have caveats, but are
|
||||
usually easy to fix). If you are looking for source analysis or
|
||||
source-to-source transformation tools, clang is probably a great
|
||||
solution for you. Clang supports most of C++11, please see the <a
|
||||
solution for you. Clang supports C++11, please see the <a
|
||||
href="cxx_status.html">C++ status</a> page for more
|
||||
information.</p>
|
||||
|
||||
|
|
Loading…
Reference in New Issue