#ifndef EXPECT_FINAL #error EXPECT_FINAL not defined #endif #ifndef EXPECT_INHERITING_CONSTRUCTORS #error EXPECT_INHERITING_CONSTRUCTORS not defined #endif #ifndef EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL #error EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL not defined #endif #ifndef EXPECT_OVERRIDE_CONTROL #error EXPECT_OVERRIDE_CONTROL not defined #endif #if !HAVE_OVERRIDE_CONTROL #if EXPECT_OVERRIDE_CONTROL #error "Expect override control feature" #endif #else #if !EXPECT_OVERRIDE_CONTROL #error "Expect no override control feature" #endif struct A { virtual int getA() { return 7; } }; struct B final : A { int getA() override { return 42; } }; #endif #if !HAVE_AUTO_TYPE #error Expect cxx_auto_type support #endif #if !HAVE_INHERITING_CONSTRUCTORS #if EXPECT_INHERITING_CONSTRUCTORS #error Expect cxx_inheriting_constructors support #endif #else #if !EXPECT_INHERITING_CONSTRUCTORS #error Expect no cxx_inheriting_constructors support #endif #endif #if !HAVE_FINAL #if EXPECT_FINAL #error Expect cxx_final support #endif #else #if !EXPECT_FINAL #error Expect no cxx_final support #endif #endif #if !HAVE_INHERITING_CONSTRUCTORS_AND_FINAL #if EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL #error Expect cxx_inheriting_constructors and cxx_final support #endif #else #if !EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL #error Expect no combined cxx_inheriting_constructors and cxx_final support #endif #endif int main() { }