// (C) Copyright Jonathan Turkanis 2004. // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) // Disclaimer: Not a Boost library. #ifndef BOOST_IDL_IS_INTERFACE_HPP_INCLUDED #define BOOST_IDL_IS_INTERFACE_HPP_INCLUDED #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif #include // BOOST_MSVC #include #if BOOST_WORKAROUND(BOOST_MSVC, >= 1310) # pragma warning(push) # pragma warning(disable:4675) #endif #include #include #include namespace boost { namespace interfaces { namespace detail { type_traits::no_type is_interface_helper(...); template struct is_interface_impl { typedef typename remove_reference::type obj_type; static obj_type* ptr; static const bool value = sizeof(is_interface_helper(ptr,ptr)) == sizeof(type_traits::yes_type); }; } // End namespace detail. template struct is_interface : mpl::bool_< detail::is_interface_impl::value > { }; } } // End namespaces interfaces, boost. #if BOOST_WORKAROUND(BOOST_MSVC, >= 1310) # pragma warning(pop) #endif #endif // #ifndef BOOST_IDL_IS_INTERFACE_HPP_INCLUDED