// 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 #include 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