Mark P0127R3 as done, and replace its __has_feature check with the corresponding SD-6 macro.
llvm-svn: 282652
This commit is contained in:
parent
5f274389d1
commit
27143d82f0
|
@ -505,7 +505,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
|
||||||
//Builder.defineMacro("__cpp_noexcept_function_type", "201510");
|
//Builder.defineMacro("__cpp_noexcept_function_type", "201510");
|
||||||
Builder.defineMacro("__cpp_capture_star_this", "201603");
|
Builder.defineMacro("__cpp_capture_star_this", "201603");
|
||||||
Builder.defineMacro("__cpp_if_constexpr", "201606");
|
Builder.defineMacro("__cpp_if_constexpr", "201606");
|
||||||
//Builder.defineMacro("__cpp_template_auto", "201606");
|
Builder.defineMacro("__cpp_template_auto", "201606");
|
||||||
Builder.defineMacro("__cpp_namespace_attributes", "201411");
|
Builder.defineMacro("__cpp_namespace_attributes", "201411");
|
||||||
Builder.defineMacro("__cpp_enumerator_attributes", "201411");
|
Builder.defineMacro("__cpp_enumerator_attributes", "201411");
|
||||||
Builder.defineMacro("__cpp_nested_namespace_definitions", "201411");
|
Builder.defineMacro("__cpp_nested_namespace_definitions", "201411");
|
||||||
|
|
|
@ -1192,7 +1192,7 @@ static bool HasFeature(const Preprocessor &PP, StringRef Feature) {
|
||||||
.Case("cxx_unrestricted_unions", LangOpts.CPlusPlus11)
|
.Case("cxx_unrestricted_unions", LangOpts.CPlusPlus11)
|
||||||
.Case("cxx_user_literals", LangOpts.CPlusPlus11)
|
.Case("cxx_user_literals", LangOpts.CPlusPlus11)
|
||||||
.Case("cxx_variadic_templates", LangOpts.CPlusPlus11)
|
.Case("cxx_variadic_templates", LangOpts.CPlusPlus11)
|
||||||
// C++1y features
|
// C++14 features
|
||||||
.Case("cxx_aggregate_nsdmi", LangOpts.CPlusPlus14)
|
.Case("cxx_aggregate_nsdmi", LangOpts.CPlusPlus14)
|
||||||
.Case("cxx_binary_literals", LangOpts.CPlusPlus14)
|
.Case("cxx_binary_literals", LangOpts.CPlusPlus14)
|
||||||
.Case("cxx_contextual_conversions", LangOpts.CPlusPlus14)
|
.Case("cxx_contextual_conversions", LangOpts.CPlusPlus14)
|
||||||
|
@ -1202,8 +1202,9 @@ static bool HasFeature(const Preprocessor &PP, StringRef Feature) {
|
||||||
.Case("cxx_relaxed_constexpr", LangOpts.CPlusPlus14)
|
.Case("cxx_relaxed_constexpr", LangOpts.CPlusPlus14)
|
||||||
.Case("cxx_return_type_deduction", LangOpts.CPlusPlus14)
|
.Case("cxx_return_type_deduction", LangOpts.CPlusPlus14)
|
||||||
.Case("cxx_variable_templates", LangOpts.CPlusPlus14)
|
.Case("cxx_variable_templates", LangOpts.CPlusPlus14)
|
||||||
// C++1z features
|
// NOTE: For features covered by SD-6, it is preferable to provide *only*
|
||||||
.Case("cxx_template_auto", LangOpts.CPlusPlus1z)
|
// the SD-6 macro and not a __has_feature check.
|
||||||
|
|
||||||
// C++ TSes
|
// C++ TSes
|
||||||
//.Case("cxx_runtime_arrays", LangOpts.CPlusPlusTSArrays)
|
//.Case("cxx_runtime_arrays", LangOpts.CPlusPlusTSArrays)
|
||||||
//.Case("cxx_concepts", LangOpts.CPlusPlusTSConcepts)
|
//.Case("cxx_concepts", LangOpts.CPlusPlusTSConcepts)
|
||||||
|
@ -1287,7 +1288,7 @@ static bool HasExtension(const Preprocessor &PP, StringRef Extension) {
|
||||||
.Case("cxx_reference_qualified_functions", LangOpts.CPlusPlus)
|
.Case("cxx_reference_qualified_functions", LangOpts.CPlusPlus)
|
||||||
.Case("cxx_rvalue_references", LangOpts.CPlusPlus)
|
.Case("cxx_rvalue_references", LangOpts.CPlusPlus)
|
||||||
.Case("cxx_variadic_templates", LangOpts.CPlusPlus)
|
.Case("cxx_variadic_templates", LangOpts.CPlusPlus)
|
||||||
// C++1y features supported by other languages as extensions.
|
// C++14 features supported by other languages as extensions.
|
||||||
.Case("cxx_binary_literals", true)
|
.Case("cxx_binary_literals", true)
|
||||||
.Case("cxx_init_captures", LangOpts.CPlusPlus11)
|
.Case("cxx_init_captures", LangOpts.CPlusPlus11)
|
||||||
.Case("cxx_variable_templates", LangOpts.CPlusPlus)
|
.Case("cxx_variable_templates", LangOpts.CPlusPlus)
|
||||||
|
|
|
@ -58,8 +58,7 @@
|
||||||
|
|
||||||
// static_assert checked below
|
// static_assert checked below
|
||||||
|
|
||||||
#if check(template_auto, 0, 0, 0, 0) // FIXME: provisional name
|
#if check(template_auto, 0, 0, 0, 201606) // FIXME: provisional name
|
||||||
// FIXME: value shuld be 201606 for cxx1z once implemented
|
|
||||||
#error "wrong value for __cpp_template_auto"
|
#error "wrong value for __cpp_template_auto"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -689,7 +689,7 @@ as the draft C++1z standard evolves.
|
||||||
<tr>
|
<tr>
|
||||||
<td>Non-type template parameters with <tt>auto</tt> type</td>
|
<td>Non-type template parameters with <tt>auto</tt> type</td>
|
||||||
<td><a href="http://wg21.link/p0127r2">P0127R2</a></td>
|
<td><a href="http://wg21.link/p0127r2">P0127R2</a></td>
|
||||||
<td class="none" align="center">No</td>
|
<td class="svn" align="center">SVN</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Guaranteed copy elision</td>
|
<td>Guaranteed copy elision</td>
|
||||||
|
|
Loading…
Reference in New Issue