// Copyright David Abrahams 2006. Distributed under the Boost | |
// Software License, Version 1.0. (See accompanying | |
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
#ifndef BOOST_CONCEPT_CHECK_HAS_CONSTRAINTS_DWA2006429_HPP | |
# define BOOST_CONCEPT_CHECK_HAS_CONSTRAINTS_DWA2006429_HPP | |
namespace boost { namespace concept_checking { | |
// Here we implement the "metafunction" that detects whether a | |
// constraints metafunction exists | |
typedef char yes; | |
typedef char (&no)[2]; | |
template <class Model, void (Model::*)()> | |
struct wrap_constraints {}; | |
template <class Model> | |
inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0); | |
inline no has_constraints_(...); | |
template <class Model> | |
struct has_constraints | |
{ | |
BOOST_STATIC_CONSTANT( | |
bool | |
, value = sizeof( concept_checking::has_constraints_((Model*)0) ) == 1 ); | |
}; | |
}} // namespace boost::concept_checking | |
#endif // BOOST_CONCEPT_CHECK_HAS_CONSTRAINTS_DWA2006429_HPP |