diff options
author | Bill Wendling <isanbard@gmail.com> | 2013-05-21 00:27:13 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2013-05-21 00:27:13 +0000 |
commit | dd7fa8c95a433b0862019791a26ed19459779c54 (patch) | |
tree | 963ff906c67afe36ac20184f5a52e0c22825e272 /docs | |
parent | ef98ec8ac0f8d370b0a96ffdc9805adae3f152a8 (diff) |
Merging r181342:
------------------------------------------------------------------------
r181342 | rsmith | 2013-05-07 12:32:56 -0700 (Tue, 07 May 2013) | 4 lines
C++1y: Update __cplusplus to temporary value 201305L to allow detection of provisional C++1y support.
Add __has_feature and __has_extension checks for C++1y features (based on the provisional names from
the C++ features study group), and update documentation to match.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_33@182340 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r-- | docs/LanguageExtensions.rst | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/docs/LanguageExtensions.rst b/docs/LanguageExtensions.rst index dbb67f908d..324feafa98 100644 --- a/docs/LanguageExtensions.rst +++ b/docs/LanguageExtensions.rst @@ -779,6 +779,98 @@ Use ``__has_feature(cxx_variadic_templates)`` or ``__has_extension(cxx_variadic_templates)`` to determine if support for variadic templates is enabled. +C++1y +----- + +The features listed below are part of the committee draft for the C++1y +standard. As a result, all these features are enabled with the ``-std=c++1y`` +or ``-std=gnu++1y`` option when compiling C++ code. + +C++1y binary literals +^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_binary_literals)`` or +``__has_extension(cxx_binary_literals)`` to determine whether +binary literals (for instance, ``0b10010``) are recognized. Clang supports this +feature as an extension in all language modes. + +C++1y contextual conversions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_contextual_conversions)`` or +``__has_extension(cxx_contextual_conversions)`` to determine if the C++1y rules +are used when performing an implicit conversion for an array bound in a +*new-expression*, the operand of a *delete-expression*, an integral constant +expression, or a condition in a ``switch`` statement. Clang does not yet +support this feature. + +C++1y decltype(auto) +^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_decltype_auto)`` or +``__has_extension(cxx_decltype_auto)`` to determine if support +for the ``decltype(auto)`` placeholder type is enabled. + +C++1y default initializers for aggregates +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_aggregate_nsdmi)`` or +``__has_extension(cxx_aggregate_nsdmi)`` to determine if support +for default initializers in aggregate members is enabled. + +C++1y generalized lambda capture +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_generalized_capture)`` or +``__has_extension(cxx_generalized_capture`` to determine if support for +generalized lambda captures is enabled +(for instance, ``[n(0)] { return ++n; }``). +Clang does not yet support this feature. + +C++1y generic lambdas +^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_generic_lambda)`` or +``__has_extension(cxx_generic_lambda)`` to determine if support for generic +(polymorphic) lambdas is enabled +(for instance, ``[] (auto x) { return x + 1; }``). +Clang does not yet support this feature. + +C++1y relaxed constexpr +^^^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_relaxed_constexpr)`` or +``__has_extension(cxx_relaxed_constexpr)`` to determine if variable +declarations, local variable modification, and control flow constructs +are permitted in ``constexpr`` functions. +Clang's implementation of this feature is incomplete. + +C++1y return type deduction +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_return_type_deduction)`` or +``__has_extension(cxx_return_type_deduction)`` to determine if support +for return type deduction for functions (using ``auto`` as a return type) +is enabled. +Clang's implementation of this feature is incomplete. + +C++1y runtime-sized arrays +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_runtime_array)`` or +``__has_extension(cxx_runtime_array)`` to determine if support +for arrays of runtime bound (a restricted form of variable-length arrays) +is enabled. +Clang's implementation of this feature is incomplete. + +C++1y variable templates +^^^^^^^^^^^^^^^^^^^^^^^^ + +Use ``__has_feature(cxx_variable_templates)`` or +``__has_extension(cxx_variable_templates)`` to determine if support for +templated variable declarations is enabled. +Clang does not yet support this feature. + C11 --- |