#include <boost/config.hpp>
#include <boost/static_assert.hpp>
#include <boost/type_traits/is_polymorphic.hpp>
#include <boost/serialization/static_warning.hpp>
typedef char a1[2];
typedef char a2[3];
class polymorphic {
virtual ~polymorphic();
};
class non_polymorphic {
};
template<class T>
int f(){
BOOST_STATIC_WARNING(T::value);
return 0;
}
struct A {
BOOST_STATIC_CONSTANT(bool, value = false);
};
BOOST_STATIC_WARNING(true);
int x = f<A>(); int y = f<boost::is_polymorphic<non_polymorphic> >(); int z = f<boost::is_polymorphic<polymorphic> >();
BOOST_STATIC_WARNING(sizeof(a1) == sizeof(a2)); BOOST_STATIC_WARNING(sizeof(a1) != sizeof(a1)); BOOST_STATIC_WARNING(! boost::is_polymorphic<polymorphic>::value); BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value);
int main(int , char * []){
BOOST_STATIC_WARNING(true);
f<A>();
BOOST_STATIC_WARNING(sizeof(a1) == sizeof(a2)); BOOST_STATIC_WARNING(sizeof(a1) != sizeof(a1)); BOOST_STATIC_WARNING(! boost::is_polymorphic<polymorphic>::value); BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value); return 0;
}