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