#include #include struct x {}; // Test no invariants. struct c { void invariant() const {} // Test const invariant. }; struct cv { void invariant() const volatile {} // Test const volatile invariant. }; struct i { void invariant() {} // Test non-const, non-volatile invariant. }; struct si { static void invariant() {} // Test static invariant. }; struct s { static void static_invariant() {} // Test static invariant. }; struct ns { void static_invariant() {} // Test non-static invariant. }; int main() { using namespace boost::contract::aux::type_traits; BOOST_TEST(!has_const_invariant::value); BOOST_TEST(!has_const_volatile_invariant::value); BOOST_TEST(!has_invariant::value); BOOST_TEST(!has_static_invariant::value); BOOST_TEST(!has_non_static_invariant::value); BOOST_TEST( has_const_invariant::value); BOOST_TEST(!has_const_volatile_invariant::value); BOOST_TEST(!has_invariant::value); BOOST_TEST(!has_static_invariant::value); BOOST_TEST(!has_non_static_invariant::value); BOOST_TEST(!has_const_invariant::value); BOOST_TEST( has_const_volatile_invariant::value); BOOST_TEST(!has_invariant::value); BOOST_TEST(!has_static_invariant::value); BOOST_TEST(!has_non_static_invariant::value); BOOST_TEST(!has_const_invariant::value); BOOST_TEST(!has_const_volatile_invariant::value); BOOST_TEST( has_invariant::value); BOOST_TEST(!has_static_invariant::value); BOOST_TEST(!has_non_static_invariant::value); BOOST_TEST(!has_const_invariant::value); BOOST_TEST(!has_const_volatile_invariant::value); BOOST_TEST(!has_invariant::value); BOOST_TEST(!has_static_invariant::value); BOOST_TEST( has_non_static_invariant::value); return boost::report_errors(); }