35 lines · cpp
1// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s2 3inline namespace N { // expected-warning{{inline namespaces are a C++11 feature}}4struct X {5 template<typename ...Args> // expected-warning{{variadic templates are a C++11 extension}}6 void f(Args &&...) &; // expected-warning{{rvalue references are a C++11 extension}} \7 // expected-warning{{reference qualifiers on functions are a C++11 extension}}8};9}10 11struct B {12 virtual void f();13 virtual void g();14};15struct D final : B { // expected-warning {{'final' keyword is a C++11 extension}}16 virtual void f() override; // expected-warning {{'override' keyword is a C++11 extension}}17 virtual void g() final; // expected-warning {{'final' keyword is a C++11 extension}}18};19 20void NewBracedInitList() {21 // A warning on this would be sufficient once we can handle it correctly.22 new int {}; // expected-error {{}}23}24 25struct Auto {26 static int n;27};28auto Auto::n = 0; // expected-warning {{'auto' type specifier is a C++11 extension}}29auto Auto::m = 0; // expected-error {{no member named 'm' in 'Auto'}}30 // expected-warning@-1 {{'auto' type specifier is a C++11 extension}}31 32struct Conv { template<typename T> operator T(); };33bool pr21367_a = new int && false;34bool pr21367_b = &Conv::operator int && false;35