]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/log/expressions/is_keyword_descriptor.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / log / expressions / is_keyword_descriptor.hpp
1 /*
2 * Copyright Andrey Semashev 2007 - 2015.
3 * Distributed under the Boost Software License, Version 1.0.
4 * (See accompanying file LICENSE_1_0.txt or copy at
5 * http://www.boost.org/LICENSE_1_0.txt)
6 */
7 /*!
8 * \file is_keyword_descriptor.hpp
9 * \author Andrey Semashev
10 * \date 14.07.2012
11 *
12 * The header contains attribute keyword descriptor detection trait.
13 */
14
15 #ifndef BOOST_LOG_EXPRESSIONS_IS_KEYWORD_DESCRIPTOR_HPP_INCLUDED_
16 #define BOOST_LOG_EXPRESSIONS_IS_KEYWORD_DESCRIPTOR_HPP_INCLUDED_
17
18 #include <boost/mpl/bool.hpp>
19 #include <boost/log/detail/config.hpp>
20 #include <boost/log/detail/header.hpp>
21
22 #ifdef BOOST_HAS_PRAGMA_ONCE
23 #pragma once
24 #endif
25
26 namespace boost {
27
28 BOOST_LOG_OPEN_NAMESPACE
29
30 namespace expressions {
31
32 /*!
33 * Base class for keyword descriptors. All keyword descriptors must derive from this class to support the \c is_keyword_descriptor trait.
34 */
35 struct keyword_descriptor
36 {
37 #ifndef BOOST_LOG_DOXYGEN_PASS
38 typedef void _is_boost_log_keyword_descriptor;
39 #endif // BOOST_LOG_DOXYGEN_PASS
40 };
41
42 /*!
43 * The metafunction detects if the type \c T is a keyword descriptor
44 */
45 template< typename T, typename VoidT = void >
46 struct is_keyword_descriptor :
47 public mpl::false_
48 {
49 };
50
51 #ifndef BOOST_LOG_DOXYGEN_PASS
52 template< typename T >
53 struct is_keyword_descriptor< T, typename T::_is_boost_log_keyword_descriptor > :
54 public mpl::true_
55 {
56 };
57 #endif
58
59 } // namespace expressions
60
61 BOOST_LOG_CLOSE_NAMESPACE // namespace log
62
63 } // namespace boost
64
65 #include <boost/log/detail/footer.hpp>
66
67 #endif // BOOST_LOG_EXPRESSIONS_IS_KEYWORD_DESCRIPTOR_HPP_INCLUDED_