1 // Boost.TypeErasure library 2 // 3 // Copyright 2011 Steven Watanabe 4 // 5 // Distributed under the Boost Software License Version 1.0. (See 6 // accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 // 9 // $Id$ 10 11 #ifndef BOOST_TYPE_ERASURE_DETAIL_IS_PLACEHOLDER_HPP_INCLUDED 12 #define BOOST_TYPE_ERASURE_DETAIL_IS_PLACEHOLDER_HPP_INCLUDED 13 14 #include <boost/mpl/bool.hpp> 15 16 namespace boost { 17 18 namespace type_erasure { 19 20 #ifdef BOOST_TYPE_ERASURE_DOXYGEN is_empty(const T & arg)21 22 /** A metafunction that indicates whether a type is a @ref placeholder. */ 23 template<class T> 24 struct is_placeholder {}; 25 26 #else 27 28 template<class T, class Enable = void> 29 struct is_placeholder : ::boost::mpl::false_ {}; 30 31 template<class T> 32 struct is_placeholder<T, typename T::_boost_type_erasure_is_placeholder> : 33 ::boost::mpl::true_ {}; 34 35 #endif 36 37 } 38 } 39 40 #endif 41