#include #include #include #include struct A; struct AA; struct X; struct XX; struct U; struct UU; template struct a2; template struct x2; template struct u2; struct a0; struct x0; struct u0; int main() { typedef BOOST_CONTRACT_BASE_TYPES( public a2 , private b2 , protected c2 , virtual public x2 , virtual private y2 , virtual protected z2 , public virtual u2 , private virtual v2 , protected virtual w2 ) base_types2; BOOST_TEST((boost::is_same, x2, u2 > >::value)); typedef BOOST_CONTRACT_BASE_TYPES( private b1 , protected c1 , virtual private y1 , virtual protected z1 , private virtual v1 , protected virtual w1 ) base_types1; BOOST_TEST((boost::is_same >::value)); typedef BOOST_CONTRACT_BASE_TYPES( public a0 , virtual public x0 , public virtual u0 ) base_types0; BOOST_TEST((boost::is_same >::value)); return boost::report_errors(); }