From: Douglas Gregor
Use __has_feature(cxx_defaulted_functions) or +__has_extension(cxx_defaulted_functions) to determine if support for +defaulted function definitions (with = default) is enabled.
+Use __has_feature(cxx_delegating_constructors) to determine if diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index 7557f2e0fe..fd04b8a379 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -628,6 +628,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) { //.Case("cxx_constexpr", false); .Case("cxx_decltype", LangOpts.CPlusPlus0x) .Case("cxx_default_function_template_args", LangOpts.CPlusPlus0x) + .Case("cxx_defaulted_functions", LangOpts.CPlusPlus0x) .Case("cxx_delegating_constructors", LangOpts.CPlusPlus0x) .Case("cxx_deleted_functions", LangOpts.CPlusPlus0x) .Case("cxx_explicit_conversions", LangOpts.CPlusPlus0x) diff --git a/test/Lexer/has_feature_cxx0x.cpp b/test/Lexer/has_feature_cxx0x.cpp index f2b4576b57..eff9cfb892 100644 --- a/test/Lexer/has_feature_cxx0x.cpp +++ b/test/Lexer/has_feature_cxx0x.cpp @@ -79,6 +79,14 @@ int no_deleted_functions(); // CHECK-0X: has_deleted_functions // CHECK-NO-0X: no_deleted_functions +#if __has_feature(cxx_defaulted_functions) +int has_defaulted_functions(); +#else +int no_defaulted_functions(); +#endif + +// CHECK-0X: has_defaulted_functions +// CHECK-NO-0X: no_defaulted_functions #if __has_feature(cxx_rvalue_references) int has_rvalue_references();