// 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::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