// file : libcutl/meta/polymorphic-p.hxx // license : MIT; see accompanying LICENSE file #ifndef LIBCUTL_META_POLYMORPHIC_HXX #define LIBCUTL_META_POLYMORPHIC_HXX #include #include namespace cutl { namespace meta { template struct polymorphic_p { typedef typename remove_cv::r X; template struct impl { static const bool r = false; }; template struct impl { struct t1: Y { t1 (); }; struct t2: Y { t2 (); virtual ~t2 () noexcept; }; static const bool r = sizeof (t1) == sizeof (t2); }; static const bool r = impl::r>::r; }; } } #endif // LIBCUTL_META_POLYMORPHIC_HXX