57 lines
1.5 KiB
C++
57 lines
1.5 KiB
C++
|
// Copyright 2004 The Trustees of Indiana University.
|
||
|
|
||
|
// Use, modification and distribution is subject to 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)
|
||
|
|
||
|
// Authors: Douglas Gregor
|
||
|
// Andrew Lumsdaine
|
||
|
|
||
|
//
|
||
|
// This file contains helps that enable concept-based overloading
|
||
|
// within the Boost Graph Library.
|
||
|
//
|
||
|
#ifndef BOOST_GRAPH_OVERLOADING_HPP
|
||
|
#define BOOST_GRAPH_OVERLOADING_HPP
|
||
|
|
||
|
#include <boost/type_traits/is_base_and_derived.hpp>
|
||
|
#include <boost/utility/enable_if.hpp>
|
||
|
|
||
|
namespace boost
|
||
|
{
|
||
|
namespace graph
|
||
|
{
|
||
|
namespace detail
|
||
|
{
|
||
|
|
||
|
struct no_parameter
|
||
|
{
|
||
|
};
|
||
|
|
||
|
}
|
||
|
}
|
||
|
} // end namespace boost::graph::detail
|
||
|
|
||
|
#ifndef BOOST_NO_SFINAE
|
||
|
|
||
|
#define BOOST_GRAPH_ENABLE_IF_MODELS(Graph, Tag, Type) \
|
||
|
typename enable_if_c< \
|
||
|
(is_base_and_derived< Tag, \
|
||
|
typename graph_traits< Graph >::traversal_category >::value), \
|
||
|
Type >::type
|
||
|
|
||
|
#define BOOST_GRAPH_ENABLE_IF_MODELS_PARM(Graph, Tag) \
|
||
|
, \
|
||
|
BOOST_GRAPH_ENABLE_IF_MODELS( \
|
||
|
Graph, Tag, ::boost::graph::detail::no_parameter) \
|
||
|
= ::boost::graph::detail::no_parameter()
|
||
|
|
||
|
#else
|
||
|
|
||
|
#define BOOST_GRAPH_ENABLE_IF_MODELS(Graph, Tag, Type) Type
|
||
|
#define BOOST_GRAPH_ENABLE_IF_MODELS_PARM(Graph, Tag)
|
||
|
|
||
|
#endif // no SFINAE support
|
||
|
|
||
|
#endif // BOOST_GRAPH_OVERLOADING_HPP
|