// { dg-do compile { target c++98_only } } // C++11 features: #ifndef __cpp_runtime_arrays # error "__cpp_runtime_arrays" // { dg-error "error" } #endif #ifndef __cpp_unicode_characters # error "__cpp_unicode_characters" // { dg-error "error" } #endif #ifndef __cpp_raw_strings # error "__cpp_raw_strings" // { dg-error "error" } #endif #ifndef __cpp_unicode_literals # error "__cpp_unicode_literals" // { dg-error "error" } #endif #ifndef __cpp_user_defined_literals # error "__cpp_user_defined_literals" // { dg-error "error" } #endif #ifndef __cpp_lambdas # error "__cpp_lambdas" // { dg-error "error" } #endif #ifndef __cpp_constexpr # error "__cpp_constexpr" // { dg-error "error" } #endif #ifndef __cpp_static_assert # error "__cpp_static_assert" // { dg-error "error" } #endif #ifndef __cpp_decltype # error "__cpp_decltype" // { dg-error "error" } #endif #ifndef __cpp_attributes # error "__cpp_attributes" // { dg-error "error" } #endif #ifndef __cpp_rvalue_references # error "__cpp_rvalue_references" // { dg-error "error" } #endif #ifndef __cpp_variadic_templates # error "__cpp_variadic_templates" // { dg-error "error" } #endif #ifndef __cpp_initializer_lists # error "__cpp_initializer_lists" // { dg-error "error" } #endif #ifndef __cpp_delegating_constructors # error "__cpp_delegating_constructors" // { dg-error "error" } #endif #ifndef __cpp_nsdmi # error "__cpp_nsdmi" // { dg-error "error" } #endif #ifndef __cpp_inheriting_constructors # error "__cpp_inheriting_constructors" // { dg-error "error" } #endif #ifndef __cpp_ref_qualifiers # error "__cpp_ref_qualifiers" // { dg-error "error" } #endif #ifndef __cpp_alias_templates # error "__cpp_alias_templates" // { dg-error "error" } #endif // C++14 features: // C++98 gets binary literals in non-ANSI modes. //#ifndef __cpp_binary_literals //# error "__cpp_binary_literals" //#endif #ifndef __cpp_init_captures # error "__cpp_init_captures" // { dg-error "error" } #endif #ifndef __cpp_generic_lambdas # error "__cpp_generic_lambdas" // { dg-error "error" } #endif #ifndef __cpp_decltype_auto # error "__cpp_decltype_auto" // { dg-error "error" } #endif #ifndef __cpp_return_type_deduction # error "__cpp_return_type_deduction" // { dg-error "error" } #endif #ifndef __cpp_aggregate_nsdmi # error "__cpp_aggregate_nsdmi" // { dg-error "error" } #endif #ifndef __cpp_variable_templates # error "__cpp_variable_templates" // { dg-error "error" } #endif #ifndef __cpp_digit_separators # error "__cpp_digit_separators" // { dg-error "error" } #endif #ifndef __cpp_sized_deallocation # error "__cpp_sized_deallocation" // { dg-error "error" } #endif // C++17 features: #ifndef __cpp_namespace_attributes # error "__cpp_namespace_attributes" // { dg-error "error" } #endif #ifndef __cpp_nested_namespace_definitions # error "__cpp_nested_namespace_definitions" // { dg-error "error" } #endif // C++11 attributes: #ifdef __has_cpp_attribute # if __has_cpp_attribute(noreturn) == 200809 # error "__has_cpp_attribute(noreturn) == 200809" // { dg-error "error" } # endif #else # error "__has_cpp_attribute" #endif // Attribute carries_dependency not in yet. //#ifdef __has_cpp_attribute //# if __has_cpp_attribute(carries_dependency) == 200809 //# error "__has_cpp_attribute(carries_dependency) == 200809" // { } //# endif //#else //# error "__has_cpp_attribute" //#endif // C++14 attributes: // Attribute [[deprecated]] is allowed in C++11 as an extension. //#ifdef __has_cpp_attribute //# if __has_cpp_attribute(deprecated) == 201309 //# error "__has_cpp_attribute(deprecated)" // { } //# endif //#else //# error "__has_cpp_attribute" //#endif