#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 #ifdef TEST_CXX_STD # if !HAVE_CXX_STD_11 # error HAVE_CXX_STD_11 is false with CXX_STANDARD == 11 # endif # if HAVE_CXX_STD_14 # error HAVE_CXX_STD_14 is true with CXX_STANDARD == 11 # endif # if HAVE_CXX_STD_17 # error HAVE_CXX_STD_17 is true with CXX_STANDARD == 11 # endif #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() { }