]> git.sesse.net Git - casparcg/blob - dependencies/boost/boost/icl/type_traits/is_concept_equivalent.hpp
Manually merged pull request #222
[casparcg] / dependencies / boost / boost / icl / type_traits / is_concept_equivalent.hpp
1 /*-----------------------------------------------------------------------------+    
2 Copyright (c) 2008-2009: Joachim Faulhaber
3 +------------------------------------------------------------------------------+
4    Distributed under the Boost Software License, Version 1.0.
5       (See accompanying file LICENCE.txt or copy at
6            http://www.boost.org/LICENSE_1_0.txt)
7 +-----------------------------------------------------------------------------*/
8 #ifndef BOOST_ICL_TYPE_TRAITS_IS_CONCEPT_EQUIVALENT_HPP_JOFA_090830
9 #define BOOST_ICL_TYPE_TRAITS_IS_CONCEPT_EQUIVALENT_HPP_JOFA_090830
10
11 #include <boost/mpl/and.hpp> 
12
13 namespace boost{ namespace icl
14 {
15
16     template<template<class>class IsConcept, class LeftT, class RightT>
17     struct is_concept_equivalent
18     {
19         typedef is_concept_equivalent<IsConcept, LeftT, RightT> type;
20         BOOST_STATIC_CONSTANT(bool, value =
21             (mpl::and_<IsConcept<LeftT>, IsConcept<RightT> >::value)
22             );
23     };
24
25     template<template<class>class IsConcept, class LeftT, class RightT>
26     struct has_same_concept
27     {
28         typedef has_same_concept<IsConcept, LeftT, RightT> type;
29         BOOST_STATIC_CONSTANT(bool, value =
30             (mpl::and_<IsConcept<LeftT>, is_concept_equivalent<IsConcept, LeftT, RightT> >::value)
31             );
32     };
33
34 }} // namespace boost icl
35
36 #endif
37
38