32 lines
1020 B
C++
Executable File
32 lines
1020 B
C++
Executable File
// 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
|