1 
2 //  (C) Copyright Edward Diener 2019
3 //  Use, modification and distribution are subject to the Boost Software License,
4 //  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 //  http://www.boost.org/LICENSE_1_0.txt).
6 
7 #if !defined(BOOST_TTI_DETAIL_STATIC_FUNCTION_TYPE_HPP)
8 #define BOOST_TTI_DETAIL_STATIC_FUNCTION_TYPE_HPP
9 
10 #include <boost/function_types/is_function.hpp>
11 #include <boost/function_types/property_tags.hpp>
12 #include <boost/mpl/and.hpp>
13 #include <boost/mpl/vector.hpp>
14 #include <boost/type_traits/is_same.hpp>
15 
16 namespace boost
17   {
18   namespace tti
19     {
20     namespace detail
21       {
22       template
23         <
24         class BOOST_TTI_DETAIL_TP_R,
25         class BOOST_TTI_DETAIL_TP_FS,
26         class BOOST_TTI_DETAIL_TP_TAG
27         >
28       struct static_function_type :
29         boost::mpl::and_
30           <
31           boost::is_same<BOOST_TTI_DETAIL_TP_TAG,boost::function_types::null_tag>,
32           boost::is_same<BOOST_TTI_DETAIL_TP_FS,boost::mpl::vector<> >,
33           boost::function_types::is_function<BOOST_TTI_DETAIL_TP_R>
34           >
35         {
36         };
37       }
38     }
39   }
40 
41 #endif // BOOST_TTI_DETAIL_STATIC_FUNCTION_TYPE_HPP
42