// { dg-do compile } // { dg-options "-std=gnu++11" } // C++98 features: #ifndef __cpp_rtti # error "__cpp_rtti" #elif __cpp_rtti != 199711 # error "__cpp_rtti != 199711" #endif #ifndef __cpp_exceptions # error "__cpp_exceptions" #elif __cpp_exceptions != 199711 # error "__cpp_exceptions != 199711" #endif // C++11 features: #ifndef __cpp_unicode_characters # error "__cpp_unicode_characters" #elif __cpp_unicode_characters != 200704 # error "__cpp_unicode_characters != 200704" #endif #ifndef __cpp_raw_strings # error "__cpp_raw_strings" #elif __cpp_raw_strings != 200710 # error "__cpp_raw_strings != 200710" #endif #ifndef __cpp_unicode_literals # error "__cpp_unicode_literals" #elif __cpp_unicode_literals != 200710 # error "__cpp_unicode_literals != 200710" #endif #ifndef __cpp_user_defined_literals # error "__cpp_user_defined_literals" #elif __cpp_user_defined_literals != 200809 # error "__cpp_user_defined_literals != 200809" #endif #ifndef __cpp_lambdas # error "__cpp_lambdas" #elif __cpp_lambdas != 200907 # error "__cpp_lambdas != 200907" #endif #ifndef __cpp_constexpr # error "__cpp_constexpr" #elif __cpp_constexpr != 200704 # error "__cpp_constexpr != 200704" #endif #ifndef __cpp_range_based_for # error "__cpp_range_based_for" #elif __cpp_range_based_for < 200907 # error "__cpp_range_based_for < 200907" #endif #ifndef __cpp_static_assert # error "__cpp_static_assert" #elif __cpp_static_assert != 200410 # error "__cpp_static_assert != 200410" #endif #ifndef __cpp_decltype # error "__cpp_decltype" #elif __cpp_decltype != 200707 # error "__cpp_decltype != 200707" #endif #ifndef __cpp_attributes # error "__cpp_attributes" #elif __cpp_attributes != 200809 # error "__cpp_attributes != 200809" #endif #ifndef __cpp_rvalue_references # error "__cpp_rvalue_references" #elif __cpp_rvalue_references != 200610 # error "__cpp_rvalue_references != 200610" #endif #ifndef __cpp_variadic_templates # error "__cpp_variadic_templates" #elif __cpp_variadic_templates != 200704 # error "__cpp_variadic_templates != 200704" #endif #ifndef __cpp_initializer_lists # error "__cpp_initializer_lists" #elif __cpp_initializer_lists != 200806 # error "__cpp_initializer_lists != 200806" #endif #ifndef __cpp_delegating_constructors # error "__cpp_delegating_constructors" #elif __cpp_delegating_constructors != 200604 # error "__cpp_delegating_constructors != 200604" #endif #ifndef __cpp_nsdmi # error "__cpp_nsdmi" #elif __cpp_nsdmi != 200809 # error "__cpp_nsdmi != 200809" #endif #ifndef __cpp_inheriting_constructors # error "__cpp_inheriting_constructors" #elif __cpp_inheriting_constructors!= 201511 # error "__cpp_inheriting_constructors != 201511" #endif #ifndef __cpp_ref_qualifiers # error "__cpp_ref_qualifiers" #elif __cpp_ref_qualifiers != 200710 # error "__cpp_ref_qualifiers != 200710" #endif #ifndef __cpp_alias_templates # error "__cpp_alias_templates" #elif __cpp_alias_templates != 200704 # error "__cpp_alias_templates != 200704" #endif #ifndef __cpp_threadsafe_static_init # error "__cpp_threadsafe_static_init" #elif __cpp_threadsafe_static_init != 200806 # error "__cpp_threadsafe_static_init != 200806" #endif // C++14 features allowed in C++11 in non-ANSI modes: #ifndef __cpp_binary_literals # error "__cpp_binary_literals" #elif __cpp_binary_literals != 201304 # error "__cpp_binary_literals != 201304" #endif // GNU VLA support: #ifndef __cpp_runtime_arrays # error "__cpp_runtime_arrays" #elif __cpp_runtime_arrays != 198712 # error "__cpp_runtime_arrays != 198712" #endif // C++11 attributes: #ifdef __has_cpp_attribute # if ! __has_cpp_attribute(noreturn) # error "__has_cpp_attribute(noreturn)" # elif __has_cpp_attribute(noreturn) != 200809 # error "__has_cpp_attribute(noreturn) != 200809" # endif #else # error "__has_cpp_attribute" #endif #ifdef __has_cpp_attribute // Attribute carries_dependency not in yet. //# if ! __has_cpp_attribute(carries_dependency) //# error "__has_cpp_attribute(carries_dependency)" //# elif __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) # error "__has_cpp_attribute(deprecated)" # elif __has_cpp_attribute(deprecated) != 201309 # error "__has_cpp_attribute(deprecated) != 201309" # endif #else # error "__has_cpp_attribute" #endif