diff options
Diffstat (limited to 'boost/type_traits/is_virtual_base_of.hpp')
-rw-r--r-- | boost/type_traits/is_virtual_base_of.hpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/boost/type_traits/is_virtual_base_of.hpp b/boost/type_traits/is_virtual_base_of.hpp index 33db914d34..3daad1b51b 100644 --- a/boost/type_traits/is_virtual_base_of.hpp +++ b/boost/type_traits/is_virtual_base_of.hpp @@ -36,6 +36,17 @@ struct is_virtual_base_of_impl template<typename Base, typename Derived> struct is_virtual_base_of_impl<Base, Derived, mpl::true_> { + union max_align + { + unsigned u; + unsigned long ul; + void* v; + double d; + long double ld; +#ifndef BOOST_NO_LONG_LONG + long long ll; +#endif + }; #ifdef __BORLANDC__ struct boost_type_traits_internal_struct_X : public virtual Derived, public virtual Base { @@ -43,6 +54,7 @@ struct is_virtual_base_of_impl<Base, Derived, mpl::true_> boost_type_traits_internal_struct_X(const boost_type_traits_internal_struct_X&); boost_type_traits_internal_struct_X& operator=(const boost_type_traits_internal_struct_X&); ~boost_type_traits_internal_struct_X()throw(); + max_align data[4]; }; struct boost_type_traits_internal_struct_Y : public virtual Derived { @@ -50,6 +62,7 @@ struct is_virtual_base_of_impl<Base, Derived, mpl::true_> boost_type_traits_internal_struct_Y(const boost_type_traits_internal_struct_Y&); boost_type_traits_internal_struct_Y& operator=(const boost_type_traits_internal_struct_Y&); ~boost_type_traits_internal_struct_Y()throw(); + max_align data[4]; }; #else struct boost_type_traits_internal_struct_X : public Derived, virtual Base @@ -58,6 +71,7 @@ struct is_virtual_base_of_impl<Base, Derived, mpl::true_> boost_type_traits_internal_struct_X(const boost_type_traits_internal_struct_X&); boost_type_traits_internal_struct_X& operator=(const boost_type_traits_internal_struct_X&); ~boost_type_traits_internal_struct_X()throw(); + max_align data[16]; }; struct boost_type_traits_internal_struct_Y : public Derived { @@ -65,6 +79,7 @@ struct is_virtual_base_of_impl<Base, Derived, mpl::true_> boost_type_traits_internal_struct_Y(const boost_type_traits_internal_struct_Y&); boost_type_traits_internal_struct_Y& operator=(const boost_type_traits_internal_struct_Y&); ~boost_type_traits_internal_struct_Y()throw(); + max_align data[16]; }; #endif BOOST_STATIC_CONSTANT(bool, value = (sizeof(boost_type_traits_internal_struct_X)==sizeof(boost_type_traits_internal_struct_Y))); |