Sha256: 915d930326a090f7253bd8285cbd5286f753820190f31c6ef4105e5ea7983768

Contents?: true

Size: 1.51 KB

Versions: 35

Compression:

Stored size: 1.51 KB

Contents

// 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_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
# define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP

# include <boost/mpl/bool.hpp>
# include <boost/detail/workaround.hpp>
namespace boost { namespace concept {

namespace detail
{ 

// 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 {};
    
#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580)
  // Work around the following bogus error in Sun Studio 11, by
  // turning off the has_constraints function entirely:
  //    Error: complex expression not allowed in dependent template
  //    argument expression
  inline no has_constraints_(...);
#else
  template <class Model>
  inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
  inline no has_constraints_(...);
#endif
}

// This would be called "detail::has_constraints," but it has a strong
// tendency to show up in error messages.
template <class Model>
struct not_satisfied
{
    BOOST_STATIC_CONSTANT(
        bool
      , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) );
    typedef mpl::bool_<value> type;
};

}} // namespace boost::concept::detail

#endif // BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP

Version data entries

35 entries across 35 versions & 5 rubygems

Version Path
rockdog-passenger-0.0.1 ext/boost/concept/detail/has_constraints.hpp
vanity-1.7.1 vendor/ruby/1.9.1/gems/passenger-2.2.15/ext/boost/concept/detail/has_constraints.hpp
passenger-3.0.0 ext/boost/concept/detail/has_constraints.hpp
passenger-3.0.0.pre4 ext/boost/concept/detail/has_constraints.hpp
passenger-3.0.0.pre3 ext/boost/concept/detail/has_constraints.hpp
passenger-3.0.0.pre2 ext/boost/concept/detail/has_constraints.hpp
passenger-3.0.0.pre1 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.15 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.14 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.13 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.12 ext/boost/concept/detail/has_constraints.hpp
colouringcode-passenger-0.2 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.11 ext/boost/concept/detail/has_constraints.hpp
passenger-jmazzi-2.2.10 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.10 ext/boost/concept/detail/has_constraints.hpp
passenger-jmazzi-2.2.9 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.9 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.8 ext/boost/concept/detail/has_constraints.hpp
colouringcode-passenger-0.1 ext/boost/concept/detail/has_constraints.hpp
passenger-2.2.7 ext/boost/concept/detail/has_constraints.hpp