$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76535 - in branches/release: . boost boost/algorithm/string boost/algorithm/string/detail boost/archive boost/bimap boost/config boost/date_time boost/date_time/posix_time boost/detail boost/dynamic_bitset boost/function boost/functional boost/fusion boost/geometry boost/geometry/domains boost/geometry/io boost/geometry/io/dsv boost/gil boost/graph boost/graph/detail boost/graph/distributed boost/heap boost/icl boost/integer boost/interprocess boost/intrusive boost/io boost/iostreams boost/iterator boost/locale boost/msm boost/msm/back boost/msm/front boost/msm/front/detail boost/msm/front/euml boost/msm/mpl_graph boost/numeric/ublas boost/pool boost/preprocessor boost/program_options boost/program_options/detail boost/property_tree boost/python boost/range boost/regex boost/serialization boost/signals boost/signals2 boost/spirit boost/spirit/home boost/spirit/home/karma boost/spirit/home/support boost/statechart boost/system boost/thread boost/tr1 boost/type_traits boost/typeof boost/unordered boost/utility boost/uuid boost/variant boost/wave boost/xpressive doc libs libs/algorithm/minmax libs/algorithm/string libs/algorithm/string/doc libs/array libs/array/test libs/bimap libs/concept_check libs/config libs/date_time libs/date_time/data libs/date_time/example/gregorian libs/date_time/example/local_time libs/date_time/example/posix_time libs/date_time/example/tutorial libs/date_time/test/posix_time libs/date_time/xmldoc libs/detail libs/function libs/functional libs/fusion libs/geometry libs/geometry/doc libs/graph/doc libs/graph/example libs/graph/test libs/graph_parallel libs/heap libs/icl libs/icl/doc libs/icl/doc/html libs/icl/doc/html/header/boost/icl libs/icl/test libs/icl/test/test_doc_code_ libs/integer libs/interprocess libs/intrusive libs/io libs/io/doc libs/iostreams libs/iterator libs/locale libs/locale/src libs/mpi/build libs/mpl/doc/refmanual libs/mpl/doc/src/refmanual libs/msm libs/numeric/ublas libs/numeric/ublas/doc libs/parameter/doc/html libs/phoenix/doc libs/phoenix/doc/examples libs/pool libs/preprocessor libs/program_options libs/program_options/test libs/property_tree libs/python libs/range libs/regex libs/serialization libs/serialization/example libs/serialization/src libs/serialization/test libs/signals libs/signals2 libs/signals2/doc libs/spirit libs/spirit/classic/example libs/spirit/doc libs/spirit/example libs/spirit/phoenix libs/spirit/test libs/spirit/test/qi libs/statechart libs/static_assert libs/system libs/thread libs/thread/test libs/timer libs/tr1 libs/type_traits libs/typeof/doc libs/unordered libs/utility libs/utility/swap/test libs/uuid libs/wave more status tools tools/bcp tools/boostbook tools/build/v2 tools/build/v2/tools tools/inspect tools/quickbook tools/regression tools/regression/src tools/release tools/wave
From: jewillco_at_[hidden]
Date: 2012-01-15 18:32:16
Author: jewillco
Date: 2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
New Revision: 76535
URL: http://svn.boost.org/trac/boost/changeset/76535
Log:
Merged r76050, r75547, r75891, r76049, r76083, and r76439 from trunk (reverse_graph bug fixes and fix for #6293); refs #6293
Properties modified: 
   branches/release/   (props changed)
   branches/release/INSTALL   (props changed)
   branches/release/Jamroot   (props changed)
   branches/release/LICENSE_1_0.txt   (props changed)
   branches/release/boost/   (props changed)
   branches/release/boost-build.jam   (props changed)
   branches/release/boost.css   (props changed)
   branches/release/boost.png   (props changed)
   branches/release/boost/algorithm/string/   (props changed)
   branches/release/boost/algorithm/string/detail/case_conv.hpp   (props changed)
   branches/release/boost/algorithm/string/detail/classification.hpp   (props changed)
   branches/release/boost/archive/   (props changed)
   branches/release/boost/array.hpp   (props changed)
   branches/release/boost/bimap/   (props changed)
   branches/release/boost/concept_check.hpp   (props changed)
   branches/release/boost/config/   (props changed)
   branches/release/boost/config.hpp   (props changed)
   branches/release/boost/cregex.hpp   (props changed)
   branches/release/boost/cstdint.hpp   (props changed)
   branches/release/boost/current_function.hpp   (props changed)
   branches/release/boost/date_time/c_time.hpp   (props changed)
   branches/release/boost/date_time/date_formatting.hpp   (props changed)
   branches/release/boost/date_time/filetime_functions.hpp   (props changed)
   branches/release/boost/date_time/gregorian_calendar.ipp   (props changed)
   branches/release/boost/date_time/posix_time/time_serialize.hpp   (props changed)
   branches/release/boost/date_time/strings_from_facet.hpp   (props changed)
   branches/release/boost/date_time/time_facet.hpp   (props changed)
   branches/release/boost/date_time/tz_db_base.hpp   (props changed)
   branches/release/boost/detail/   (props changed)
   branches/release/boost/detail/fenv.hpp   (props changed)
   branches/release/boost/detail/interlocked.hpp   (props changed)
   branches/release/boost/dynamic_bitset/dynamic_bitset.hpp   (props changed)
   branches/release/boost/function/   (props changed)
   branches/release/boost/function/function_template.hpp   (props changed)
   branches/release/boost/functional/   (props changed)
   branches/release/boost/fusion/   (props changed)
   branches/release/boost/geometry/   (props changed)
   branches/release/boost/geometry/domains/   (props changed)
   branches/release/boost/geometry/io/   (props changed)
   branches/release/boost/geometry/io/dsv/   (props changed)
   branches/release/boost/gil/   (props changed)
   branches/release/boost/graph/   (props changed)
   branches/release/boost/heap/   (props changed)
   branches/release/boost/icl/   (props changed)
   branches/release/boost/integer/   (props changed)
   branches/release/boost/integer.hpp   (props changed)
   branches/release/boost/integer_fwd.hpp   (props changed)
   branches/release/boost/integer_traits.hpp   (props changed)
   branches/release/boost/interprocess/   (props changed)
   branches/release/boost/intrusive/   (props changed)
   branches/release/boost/io/   (props changed)
   branches/release/boost/iostreams/   (props changed)
   branches/release/boost/iterator/   (props changed)
   branches/release/boost/iterator/iterator_facade.hpp   (props changed)
   branches/release/boost/locale/   (props changed)
   branches/release/boost/locale.hpp   (props changed)
   branches/release/boost/math_fwd.hpp   (props changed)
   branches/release/boost/msm/   (props changed)
   branches/release/boost/msm/active_state_switching_policies.hpp   (props changed)
   branches/release/boost/msm/back/   (props changed)
   branches/release/boost/msm/back/args.hpp   (props changed)
   branches/release/boost/msm/back/bind_helpers.hpp   (props changed)
   branches/release/boost/msm/back/common_types.hpp   (props changed)
   branches/release/boost/msm/back/copy_policies.hpp   (props changed)
   branches/release/boost/msm/back/default_compile_policy.hpp   (props changed)
   branches/release/boost/msm/back/dispatch_table.hpp   (props changed)
   branches/release/boost/msm/back/favor_compile_time.hpp   (props changed)
   branches/release/boost/msm/back/fold_to_list.hpp   (props changed)
   branches/release/boost/msm/back/history_policies.hpp   (props changed)
   branches/release/boost/msm/back/metafunctions.hpp   (props changed)
   branches/release/boost/msm/back/mpl_graph_fsm_check.hpp   (props changed)
   branches/release/boost/msm/back/no_fsm_check.hpp   (props changed)
   branches/release/boost/msm/back/queue_container_circular.hpp   (props changed)
   branches/release/boost/msm/back/queue_container_deque.hpp   (props changed)
   branches/release/boost/msm/back/state_machine.hpp   (props changed)
   branches/release/boost/msm/back/tools.hpp   (props changed)
   branches/release/boost/msm/common.hpp   (props changed)
   branches/release/boost/msm/front/   (props changed)
   branches/release/boost/msm/front/common_states.hpp   (props changed)
   branches/release/boost/msm/front/completion_event.hpp   (props changed)
   branches/release/boost/msm/front/detail/   (props changed)
   branches/release/boost/msm/front/detail/common_states.hpp   (props changed)
   branches/release/boost/msm/front/detail/row2_helper.hpp   (props changed)
   branches/release/boost/msm/front/euml/   (props changed)
   branches/release/boost/msm/front/euml/algorithm.hpp   (props changed)
   branches/release/boost/msm/front/euml/common.hpp   (props changed)
   branches/release/boost/msm/front/euml/container.hpp   (props changed)
   branches/release/boost/msm/front/euml/euml.hpp   (props changed)
   branches/release/boost/msm/front/euml/euml_typeof.hpp   (props changed)
   branches/release/boost/msm/front/euml/guard_grammar.hpp   (props changed)
   branches/release/boost/msm/front/euml/iteration.hpp   (props changed)
   branches/release/boost/msm/front/euml/operator.hpp   (props changed)
   branches/release/boost/msm/front/euml/phoenix_placeholders.hpp   (props changed)
   branches/release/boost/msm/front/euml/querying.hpp   (props changed)
   branches/release/boost/msm/front/euml/state_grammar.hpp   (props changed)
   branches/release/boost/msm/front/euml/stl.hpp   (props changed)
   branches/release/boost/msm/front/euml/stt_grammar.hpp   (props changed)
   branches/release/boost/msm/front/euml/transformation.hpp   (props changed)
   branches/release/boost/msm/front/functor_row.hpp   (props changed)
   branches/release/boost/msm/front/internal_row.hpp   (props changed)
   branches/release/boost/msm/front/row2.hpp   (props changed)
   branches/release/boost/msm/front/state_machine_def.hpp   (props changed)
   branches/release/boost/msm/front/states.hpp   (props changed)
   branches/release/boost/msm/mpl_graph/   (props changed)
   branches/release/boost/msm/msm_grammar.hpp   (props changed)
   branches/release/boost/msm/proto_config.hpp   (props changed)
   branches/release/boost/msm/row_tags.hpp   (props changed)
   branches/release/boost/numeric/ublas/   (props changed)
   branches/release/boost/numeric/ublas/functional.hpp   (props changed)
   branches/release/boost/pool/   (props changed)
   branches/release/boost/preprocessor/   (props changed)
   branches/release/boost/program_options/   (props changed)
   branches/release/boost/program_options/detail/parsers.hpp   (props changed)
   branches/release/boost/program_options/parsers.hpp   (props changed)
   branches/release/boost/property_tree/   (props changed)
   branches/release/boost/python/   (props changed)
   branches/release/boost/range/   (props changed)
   branches/release/boost/regex/   (props changed)
   branches/release/boost/regex.h   (props changed)
   branches/release/boost/regex.hpp   (props changed)
   branches/release/boost/regex_fwd.hpp   (props changed)
   branches/release/boost/serialization/   (props changed)
   branches/release/boost/signals/   (props changed)
   branches/release/boost/signals2/   (props changed)
   branches/release/boost/signals2.hpp   (props changed)
   branches/release/boost/spirit/   (props changed)
   branches/release/boost/spirit/home/   (props changed)
   branches/release/boost/spirit/home/karma/   (props changed)
   branches/release/boost/spirit/home/support/attributes.hpp   (props changed)
   branches/release/boost/statechart/   (props changed)
   branches/release/boost/static_assert.hpp   (props changed)
   branches/release/boost/system/   (props changed)
   branches/release/boost/thread/   (props changed)
   branches/release/boost/thread.hpp   (props changed)
   branches/release/boost/timer.hpp   (props changed)
   branches/release/boost/token_functions.hpp   (props changed)
   branches/release/boost/tr1/   (props changed)
   branches/release/boost/type_traits/   (props changed)
   branches/release/boost/type_traits.hpp   (props changed)
   branches/release/boost/typeof/message.hpp   (props changed)
   branches/release/boost/typeof/register_functions.hpp   (props changed)
   branches/release/boost/typeof/register_functions_iterate.hpp   (props changed)
   branches/release/boost/typeof/typeof.hpp   (props changed)
   branches/release/boost/typeof/unsupported.hpp   (props changed)
   branches/release/boost/unordered/   (props changed)
   branches/release/boost/utility/   (props changed)
   branches/release/boost/utility/value_init.hpp   (props changed)
   branches/release/boost/uuid/   (props changed)
   branches/release/boost/variant/   (props changed)
   branches/release/boost/version.hpp   (props changed)
   branches/release/boost/wave/   (props changed)
   branches/release/boost/xpressive/   (props changed)
   branches/release/boostcpp.jam   (props changed)
   branches/release/bootstrap.bat   (props changed)
   branches/release/bootstrap.sh   (props changed)
   branches/release/doc/   (props changed)
   branches/release/index.htm   (props changed)
   branches/release/index.html   (props changed)
   branches/release/libs/   (props changed)
   branches/release/libs/algorithm/minmax/index.html   (props changed)
   branches/release/libs/algorithm/string/   (props changed)
   branches/release/libs/algorithm/string/doc/Jamfile.v2   (props changed)
   branches/release/libs/array/   (props changed)
   branches/release/libs/array/test/array0.cpp   (props changed)
   branches/release/libs/array/test/array2.cpp   (props changed)
   branches/release/libs/array/test/array6.cpp   (props changed)
   branches/release/libs/bimap/   (props changed)
   branches/release/libs/config/   (props changed)
   branches/release/libs/date_time/   (props changed)
   branches/release/libs/date_time/data/date_time_zonespec.csv   (props changed)
   branches/release/libs/date_time/example/gregorian/days_between_new_years.cpp   (props changed)
   branches/release/libs/date_time/example/gregorian/days_since_year_start.cpp   (props changed)
   branches/release/libs/date_time/example/gregorian/days_till_new_year.cpp   (props changed)
   branches/release/libs/date_time/example/gregorian/month_add.cpp   (props changed)
   branches/release/libs/date_time/example/local_time/flight.cpp   (props changed)
   branches/release/libs/date_time/example/local_time/local_date_time.cpp   (props changed)
   branches/release/libs/date_time/example/posix_time/print_hours.cpp   (props changed)
   branches/release/libs/date_time/example/posix_time/time_math.cpp   (props changed)
   branches/release/libs/date_time/example/tutorial/io_tutorial.cpp   (props changed)
   branches/release/libs/date_time/test/posix_time/testtime_facet.cpp   (props changed)
   branches/release/libs/date_time/test/posix_time/testtime_input_facet.cpp   (props changed)
   branches/release/libs/date_time/xmldoc/date_class.xml   (props changed)
   branches/release/libs/date_time/xmldoc/usage_examples.xml   (props changed)
   branches/release/libs/detail/   (props changed)
   branches/release/libs/function/   (props changed)
   branches/release/libs/functional/   (props changed)
   branches/release/libs/fusion/   (props changed)
   branches/release/libs/geometry/   (props changed)
   branches/release/libs/geometry/doc/release_notes.qbk   (props changed)
   branches/release/libs/geometry/index.html   (props changed)
   branches/release/libs/graph/doc/   (props changed)
   branches/release/libs/graph_parallel/   (props changed)
   branches/release/libs/heap/   (props changed)
   branches/release/libs/icl/   (props changed)
   branches/release/libs/icl/doc/   (props changed)
   branches/release/libs/icl/doc/html/   (props changed)
   branches/release/libs/icl/doc/html/header/boost/icl/   (props changed)
   branches/release/libs/icl/test/   (props changed)
   branches/release/libs/icl/test/test_doc_code_/   (props changed)
   branches/release/libs/integer/   (props changed)
   branches/release/libs/interprocess/   (props changed)
   branches/release/libs/intrusive/   (props changed)
   branches/release/libs/io/   (props changed)
   branches/release/libs/io/doc/   (props changed)
   branches/release/libs/iostreams/   (props changed)
   branches/release/libs/iterator/   (props changed)
   branches/release/libs/libraries.htm   (props changed)
   branches/release/libs/locale/   (props changed)
   branches/release/libs/locale/src/   (props changed)
   branches/release/libs/maintainers.txt   (props changed)
   branches/release/libs/mpi/build/   (props changed)
   branches/release/libs/mpl/doc/refmanual/broken-compiler-workarounds.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/categorized-index-concepts.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/cfg-no-preprocessed-headers.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/composition-and-argument-binding.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/data-types-concepts.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/data-types-miscellaneous.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/extensible-associative-sequence.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/inserter-class.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/tag-dispatched-metafunction.html   (props changed)
   branches/release/libs/mpl/doc/refmanual/trivial-metafunctions-summary.html   (props changed)
   branches/release/libs/mpl/doc/src/refmanual/Iterators-Iterator.rst   (props changed)
   branches/release/libs/msm/   (props changed)
   branches/release/libs/numeric/ublas/   (props changed)
   branches/release/libs/numeric/ublas/doc/   (props changed)
   branches/release/libs/parameter/doc/html/index.html   (props changed)
   branches/release/libs/phoenix/doc/basics.qbk   (props changed)
   branches/release/libs/phoenix/doc/examples/extending_actors.qbk   (props changed)
   branches/release/libs/phoenix/doc/organisation.qbk   (props changed)
   branches/release/libs/pool/   (props changed)
   branches/release/libs/preprocessor/   (props changed)
   branches/release/libs/program_options/   (props changed)
   branches/release/libs/program_options/test/parsers_test.cpp   (props changed)
   branches/release/libs/property_tree/   (props changed)
   branches/release/libs/python/   (props changed)
   branches/release/libs/range/   (props changed)
   branches/release/libs/regex/   (props changed)
   branches/release/libs/serialization/   (props changed)
   branches/release/libs/serialization/example/   (props changed)
   branches/release/libs/serialization/src/   (props changed)
   branches/release/libs/serialization/test/test_diamond_complex.cpp   (props changed)
   branches/release/libs/signals/   (props changed)
   branches/release/libs/signals2/   (props changed)
   branches/release/libs/signals2/doc/   (props changed)
   branches/release/libs/spirit/   (props changed)
   branches/release/libs/spirit/classic/example/   (props changed)
   branches/release/libs/spirit/doc/   (props changed)
   branches/release/libs/spirit/example/   (props changed)
   branches/release/libs/spirit/phoenix/   (props changed)
   branches/release/libs/spirit/test/   (props changed)
   branches/release/libs/spirit/test/qi/optional.cpp   (props changed)
   branches/release/libs/statechart/   (props changed)
   branches/release/libs/static_assert/   (props changed)
   branches/release/libs/system/   (props changed)
   branches/release/libs/thread/   (props changed)
   branches/release/libs/thread/test/   (props changed)
   branches/release/libs/timer/   (props changed)
   branches/release/libs/tr1/   (props changed)
   branches/release/libs/type_traits/   (props changed)
   branches/release/libs/typeof/doc/typeof.qbk   (props changed)
   branches/release/libs/unordered/   (props changed)
   branches/release/libs/utility/   (props changed)
   branches/release/libs/utility/assert.html   (props changed)
   branches/release/libs/utility/assert_test.cpp   (props changed)
   branches/release/libs/utility/swap.html   (props changed)
   branches/release/libs/utility/swap/test/std_bitset.cpp   (props changed)
   branches/release/libs/utility/value_init.htm   (props changed)
   branches/release/libs/utility/value_init_test.cpp   (props changed)
   branches/release/libs/uuid/   (props changed)
   branches/release/libs/wave/   (props changed)
   branches/release/more/   (props changed)
   branches/release/rst.css   (props changed)
   branches/release/status/   (props changed)
   branches/release/status/Jamfile.v2   (props changed)
   branches/release/status/expected_results.xml   (props changed)
   branches/release/status/explicit-failures-markup.xml   (props changed)
   branches/release/status/explicit-failures.xsd   (props changed)
   branches/release/tools/   (props changed)
   branches/release/tools/bcp/   (props changed)
   branches/release/tools/boostbook/   (props changed)
   branches/release/tools/build/v2/   (props changed)
   branches/release/tools/build/v2/tools/mpi.jam   (props changed)
   branches/release/tools/inspect/   (props changed)
   branches/release/tools/quickbook/   (props changed)
   branches/release/tools/regression/   (props changed)
   branches/release/tools/regression/src/library_status.cpp   (props changed)
   branches/release/tools/release/   (props changed)
   branches/release/tools/wave/   (props changed)
Text files modified: 
   branches/release/boost/graph/astar_search.hpp                               |     6                                         
   branches/release/boost/graph/bellman_ford_shortest_paths.hpp                |    11                                         
   branches/release/boost/graph/biconnected_components.hpp                     |    17 +-                                      
   branches/release/boost/graph/boykov_kolmogorov_max_flow.hpp                 |    21 +-                                      
   branches/release/boost/graph/breadth_first_search.hpp                       |     9                                         
   branches/release/boost/graph/bron_kerbosch_all_cliques.hpp                  |    18 +-                                      
   branches/release/boost/graph/closeness_centrality.hpp                       |    33 ++--                                    
   branches/release/boost/graph/clustering_coefficient.hpp                     |    21 +-                                      
   branches/release/boost/graph/connected_components.hpp                       |     5                                         
   branches/release/boost/graph/copy.hpp                                       |    25 ++                                      
   branches/release/boost/graph/core_numbers.hpp                               |     3                                         
   branches/release/boost/graph/degree_centrality.hpp                          |    11                                         
   branches/release/boost/graph/depth_first_search.hpp                         |    21 +-                                      
   branches/release/boost/graph/detail/geodesic.hpp                            |     9                                         
   branches/release/boost/graph/dijkstra_shortest_paths.hpp                    |     3                                         
   branches/release/boost/graph/distributed/concepts.hpp                       |    23 +-                                      
   branches/release/boost/graph/distributed/hohberg_biconnected_components.hpp |     3                                         
   branches/release/boost/graph/dominator_tree.hpp                             |     7                                         
   branches/release/boost/graph/eccentricity.hpp                               |    19 +-                                      
   branches/release/boost/graph/floyd_warshall_shortest.hpp                    |     9                                         
   branches/release/boost/graph/geodesic_distance.hpp                          |    35 ++--                                    
   branches/release/boost/graph/graph_concepts.hpp                             |     5                                         
   branches/release/boost/graph/howard_cycle_ratio.hpp                         |    11                                         
   branches/release/boost/graph/isomorphism.hpp                                |    23 +-                                      
   branches/release/boost/graph/johnson_all_pairs_shortest.hpp                 |     5                                         
   branches/release/boost/graph/kruskal_min_spanning_tree.hpp                  |    19 +-                                      
   branches/release/boost/graph/neighbor_bfs.hpp                               |    11                                         
   branches/release/boost/graph/properties.hpp                                 |     2                                         
   branches/release/boost/graph/reverse_graph.hpp                              |   130 ++++++++++++++--                        
   branches/release/boost/graph/strong_components.hpp                          |    11                                         
   branches/release/boost/graph/tiernan_all_cycles.hpp                         |    17 +-                                      
   branches/release/boost/graph/transitive_closure.hpp                         |    21 +-                                      
   branches/release/boost/graph/undirected_dfs.hpp                             |    29 ++-                                     
   branches/release/libs/concept_check/reference.htm                           |     6                                         
   branches/release/libs/graph/doc/AStarHeuristic.html                         |     2                                         
   branches/release/libs/graph/doc/AdjacencyGraph.html                         |     4                                         
   branches/release/libs/graph/doc/BidirectionalGraph.html                     |     4                                         
   branches/release/libs/graph/doc/EdgeListGraph.html                          |     4                                         
   branches/release/libs/graph/doc/Graph.html                                  |    12                                         
   branches/release/libs/graph/doc/IncidenceGraph.html                         |     4                                         
   branches/release/libs/graph/doc/KeyedUpdatableQueue.html                    |     4                                         
   branches/release/libs/graph/doc/MutableGraph.html                           |     6                                         
   branches/release/libs/graph/doc/MutablePropertyGraph.html                   |     2                                         
   branches/release/libs/graph/doc/PropertyGraph.html                          |     6                                         
   branches/release/libs/graph/doc/UpdatableQueue.html                         |     2                                         
   branches/release/libs/graph/doc/VertexAndEdgeListGraph.html                 |     4                                         
   branches/release/libs/graph/doc/VertexListGraph.html                        |     6                                         
   branches/release/libs/graph/doc/biconnected_components.w                    |    11                                         
   branches/release/libs/graph/doc/constructing_algorithms.html                |    10                                         
   branches/release/libs/graph/doc/isomorphism-impl-v2.w                       |    22 +-                                      
   branches/release/libs/graph/doc/isomorphism-impl-v3.w                       |    22 +-                                      
   branches/release/libs/graph/doc/isomorphism-impl.w                          |    14                                         
   branches/release/libs/graph/doc/leda_conversion.html                        |     6                                         
   branches/release/libs/graph/doc/reverse_graph.html                          |    29 +++                                     
   branches/release/libs/graph/doc/transitive_closure.w                        |    19 +-                                      
   branches/release/libs/graph/example/implicit_graph.cpp                      |    20 +-                                      
   branches/release/libs/graph/example/leda-concept-check.cpp                  |    11                                         
   branches/release/libs/graph/example/loops_dfs.cpp                           |     5                                         
   branches/release/libs/graph/example/put-get-helper-eg.cpp                   |     3                                         
   branches/release/libs/graph/test/adj_list_cc.cpp                            |   297 ++++++++++++++++++++------------------- 
   branches/release/libs/graph/test/adj_matrix_cc.cpp                          |    69 ++++----                                
   branches/release/libs/graph/test/edge_list_cc.cpp                           |     7                                         
   branches/release/libs/graph/test/filtered_graph_cc.cpp                      |    15 +                                       
   branches/release/libs/graph/test/graph_concepts.cpp                         |    11                                         
   branches/release/libs/graph/test/grid_graph_cc.cpp                          |    17 +-                                      
   branches/release/libs/graph/test/leda_graph_cc.cpp                          |    32 ++--                                    
   branches/release/libs/graph/test/read_propmap.cpp                           |     5                                         
   branches/release/libs/graph/test/reverse_graph_cc.cpp                       |    17 +                                       
   branches/release/libs/graph/test/stanford_graph_cc.cpp                      |    35 ++--                                    
   branches/release/libs/graph/test/test_construction.hpp                      |     1                                         
   branches/release/libs/graph/test/test_destruction.hpp                       |     3                                         
   branches/release/libs/graph/test/test_direction.hpp                         |     1                                         
   branches/release/libs/graph/test/test_graph.hpp                             |     1                                         
   branches/release/libs/graph/test/test_iteration.hpp                         |     1                                         
   branches/release/libs/graph/test/test_properties.hpp                        |     2                                         
   branches/release/libs/graph/test/vector_graph_cc.cpp                        |     7                                         
   76 files changed, 776 insertions(+), 576 deletions(-)
Modified: branches/release/boost/graph/astar_search.hpp
==============================================================================
--- branches/release/boost/graph/astar_search.hpp	(original)
+++ branches/release/boost/graph/astar_search.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -25,7 +25,7 @@
 #include <boost/graph/detail/d_ary_heap.hpp>
 #include <boost/property_map/property_map.hpp>
 #include <boost/property_map/vector_property_map.hpp>
-
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
@@ -34,7 +34,7 @@
   struct AStarHeuristicConcept {
     void constraints()
     {
-      function_requires< CopyConstructibleConcept<Heuristic> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Heuristic> ));
       h(u);
     }
     Heuristic h;
@@ -58,7 +58,7 @@
   struct AStarVisitorConcept {
     void constraints()
     {
-      function_requires< CopyConstructibleConcept<Visitor> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Visitor> ));
       vis.initialize_vertex(u, g);
       vis.discover_vertex(u, g);
       vis.examine_vertex(u, g);
Modified: branches/release/boost/graph/bellman_ford_shortest_paths.hpp
==============================================================================
--- branches/release/boost/graph/bellman_ford_shortest_paths.hpp	(original)
+++ branches/release/boost/graph/bellman_ford_shortest_paths.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -29,13 +29,14 @@
 #include <boost/graph/relax.hpp>
 #include <boost/graph/visitors.hpp>
 #include <boost/graph/named_function_params.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
   template <class Visitor, class Graph>
   struct BellmanFordVisitorConcept {
     void constraints() {
-      function_requires< CopyConstructibleConcept<Visitor> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Visitor> ));
       vis.examine_edge(e, g);
       vis.edge_relaxed(e, g);
       vis.edge_not_relaxed(e, g);
@@ -95,12 +96,12 @@
                          BinaryPredicate compare,
                          BellmanFordVisitor v)
   {
-    function_requires<EdgeListGraphConcept<EdgeListGraph> >();
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<EdgeListGraph> ));
     typedef graph_traits<EdgeListGraph> GTraits;
     typedef typename GTraits::edge_descriptor Edge;
     typedef typename GTraits::vertex_descriptor Vertex;
-    function_requires<ReadWritePropertyMapConcept<DistanceMap, Vertex> >();
-    function_requires<ReadablePropertyMapConcept<WeightMap, Edge> >();
+    BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<DistanceMap, Vertex> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<WeightMap, Edge> ));
     typedef typename property_traits<DistanceMap>::value_type D_value;
     typedef typename property_traits<WeightMap>::value_type W_value;
 
@@ -229,7 +230,7 @@
     (VertexAndEdgeListGraph& g, 
      const bgl_named_params<P, T, R>& params)
   {               
-    function_requires<VertexListGraphConcept<VertexAndEdgeListGraph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<VertexAndEdgeListGraph> ));
     return detail::bellman_dispatch
       (g, num_vertices(g),
        choose_const_pmap(get_param(params, edge_weight), g, edge_weight),
Modified: branches/release/boost/graph/biconnected_components.hpp
==============================================================================
--- branches/release/boost/graph/biconnected_components.hpp	(original)
+++ branches/release/boost/graph/biconnected_components.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -20,6 +20,7 @@
 #include <boost/property_map/property_map.hpp>
 #include <boost/graph/depth_first_search.hpp>
 #include <boost/graph/graph_utility.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost
 {
@@ -160,14 +161,14 @@
   {
     typedef typename graph_traits<Graph>::vertex_descriptor vertex_t;
     typedef typename graph_traits<Graph>::edge_descriptor edge_t;
-    function_requires<VertexListGraphConcept<Graph> >();
-    function_requires<IncidenceGraphConcept<Graph> >();
-    function_requires<WritablePropertyMapConcept<ComponentMap, edge_t> >();
-    function_requires<ReadWritePropertyMapConcept<DiscoverTimeMap,
-                                                  vertex_t> >();
-    function_requires<ReadWritePropertyMapConcept<LowPointMap, vertex_t > >();
-    function_requires<ReadWritePropertyMapConcept<PredecessorMap,
-                                                  vertex_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<ComponentMap, edge_t> ));
+    BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<DiscoverTimeMap,
+                                                  vertex_t> ));
+    BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<LowPointMap, vertex_t > ));
+    BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<PredecessorMap,
+                                                  vertex_t> ));
 
     std::size_t num_components = 0;
     std::size_t dfs_time = 0;
Modified: branches/release/boost/graph/boykov_kolmogorov_max_flow.hpp
==============================================================================
--- branches/release/boost/graph/boykov_kolmogorov_max_flow.hpp	(original)
+++ branches/release/boost/graph/boykov_kolmogorov_max_flow.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -47,6 +47,7 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/named_function_params.hpp>
 #include <boost/graph/lookup_edge.hpp>
+#include <boost/concept/assert.hpp>
 
 // The algorithm impelemented here is described in:
 //
@@ -743,16 +744,16 @@
   typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
 
   //as this method is the last one before we instantiate the solver, we do the concept checks here
-  function_requires<VertexListGraphConcept<Graph> >(); //to have vertices(), num_vertices(),
-  function_requires<EdgeListGraphConcept<Graph> >(); //to have edges()
-  function_requires<IncidenceGraphConcept<Graph> >(); //to have source(), target() and out_edges()
-  function_requires<ReadablePropertyMapConcept<CapacityEdgeMap, edge_descriptor> >(); //read flow-values from edges
-  function_requires<ReadWritePropertyMapConcept<ResidualCapacityEdgeMap, edge_descriptor> >(); //write flow-values to residuals
-  function_requires<ReadablePropertyMapConcept<ReverseEdgeMap, edge_descriptor> >(); //read out reverse edges
-  function_requires<ReadWritePropertyMapConcept<PredecessorMap, vertex_descriptor> >(); //store predecessor there
-  function_requires<ReadWritePropertyMapConcept<ColorMap, vertex_descriptor> >(); //write corresponding tree
-  function_requires<ReadWritePropertyMapConcept<DistanceMap, vertex_descriptor> >(); //write distance to source/sink
-  function_requires<ReadablePropertyMapConcept<IndexMap, vertex_descriptor> >(); //get index 0...|V|-1
+  BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> )); //to have vertices(), num_vertices(),
+  BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> )); //to have edges()
+  BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> )); //to have source(), target() and out_edges()
+  BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<CapacityEdgeMap, edge_descriptor> )); //read flow-values from edges
+  BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ResidualCapacityEdgeMap, edge_descriptor> )); //write flow-values to residuals
+  BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<ReverseEdgeMap, edge_descriptor> )); //read out reverse edges
+  BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<PredecessorMap, vertex_descriptor> )); //store predecessor there
+  BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ColorMap, vertex_descriptor> )); //write corresponding tree
+  BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<DistanceMap, vertex_descriptor> )); //write distance to source/sink
+  BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap, vertex_descriptor> )); //get index 0...|V|-1
   BOOST_ASSERT(num_vertices(g) >= 2 && src != sink);
 
   detail::bk_max_flow<
Modified: branches/release/boost/graph/breadth_first_search.hpp
==============================================================================
--- branches/release/boost/graph/breadth_first_search.hpp	(original)
+++ branches/release/boost/graph/breadth_first_search.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -24,6 +24,7 @@
 #include <boost/graph/overloading.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/two_bit_color_map.hpp>
+#include <boost/concept/assert.hpp>
 
 #ifdef BOOST_GRAPH_USE_MPI
 #include <boost/graph/distributed/concepts.hpp>
@@ -34,7 +35,7 @@
   template <class Visitor, class Graph>
   struct BFSVisitorConcept {
     void constraints() {
-      function_requires< CopyConstructibleConcept<Visitor> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Visitor> ));
       vis.initialize_vertex(u, g);
       vis.discover_vertex(u, g);
       vis.examine_vertex(u, g);
@@ -59,12 +60,12 @@
      typename graph_traits<IncidenceGraph>::vertex_descriptor s,
      Buffer& Q, BFSVisitor vis, ColorMap color)
   {
-    function_requires< IncidenceGraphConcept<IncidenceGraph> >();
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<IncidenceGraph> ));
     typedef graph_traits<IncidenceGraph> GTraits;
     typedef typename GTraits::vertex_descriptor Vertex;
     typedef typename GTraits::edge_descriptor Edge;
-    function_requires< BFSVisitorConcept<BFSVisitor, IncidenceGraph> >();
-    function_requires< ReadWritePropertyMapConcept<ColorMap, Vertex> >();
+    BOOST_CONCEPT_ASSERT(( BFSVisitorConcept<BFSVisitor, IncidenceGraph> ));
+    BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ColorMap, Vertex> ));
     typedef typename property_traits<ColorMap>::value_type ColorValue;
     typedef color_traits<ColorValue> Color;
     typename GTraits::out_edge_iterator ei, ei_end;
Modified: branches/release/boost/graph/bron_kerbosch_all_cliques.hpp
==============================================================================
--- branches/release/boost/graph/bron_kerbosch_all_cliques.hpp	(original)
+++ branches/release/boost/graph/bron_kerbosch_all_cliques.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -11,6 +11,8 @@
 #include <deque>
 #include <boost/config.hpp>
 
+#include <boost/concept/assert.hpp>
+
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/lookup_edge.hpp>
 
@@ -151,7 +153,7 @@
                                 const Container& in,
                                 Container& out)
     {
-        function_requires< GraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
 
         typename graph_traits<Graph>::directed_category cat;
         typename Container::const_iterator i, end = in.end();
@@ -174,8 +176,8 @@
                         Visitor vis,
                         std::size_t min)
     {
-        function_requires< GraphConcept<Graph> >();
-        function_requires< CliqueVisitorConcept<Visitor,Clique,Graph> >();
+        BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
+        BOOST_CONCEPT_ASSERT(( CliqueVisitorConcept<Visitor,Clique,Graph> ));
         typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
 
         // Is there vertex in nots that is connected to all vertices
@@ -266,15 +268,15 @@
 inline void
 bron_kerbosch_all_cliques(const Graph& g, Visitor vis, std::size_t min)
 {
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< VertexIndexGraphConcept<Graph> >();
-    function_requires< AdjacencyMatrixConcept<Graph> >(); // Structural requirement only
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexIndexGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<Graph> )); // Structural requirement only
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
     typedef std::vector<Vertex> VertexSet;
     typedef std::deque<Vertex> Clique;
-    function_requires< CliqueVisitorConcept<Visitor,Clique,Graph> >();
+    BOOST_CONCEPT_ASSERT(( CliqueVisitorConcept<Visitor,Clique,Graph> ));
 
     // NOTE: We're using a deque to implement the clique, because it provides
     // constant inserts and removals at the end and also a constant size.
Modified: branches/release/boost/graph/closeness_centrality.hpp
==============================================================================
--- branches/release/boost/graph/closeness_centrality.hpp	(original)
+++ branches/release/boost/graph/closeness_centrality.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -9,6 +9,7 @@
 
 #include <boost/graph/detail/geodesic.hpp>
 #include <boost/graph/exterior_property.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost
 {
@@ -25,9 +26,9 @@
 
     result_type operator ()(distance_type d, const Graph&)
     {
-        function_requires< NumericValueConcept<DistanceType> >();
-        function_requires< NumericValueConcept<ResultType> >();
-        function_requires< AdaptableUnaryFunctionConcept<Reciprocal,ResultType,ResultType> >();
+        BOOST_CONCEPT_ASSERT(( NumericValueConcept<DistanceType> ));
+        BOOST_CONCEPT_ASSERT(( NumericValueConcept<ResultType> ));
+        BOOST_CONCEPT_ASSERT(( AdaptableUnaryFunctionConcept<Reciprocal,ResultType,ResultType> ));
         return (d == base_type::infinite_distance())
             ? base_type::zero_result()
             : rec(result_type(d));
@@ -75,12 +76,12 @@
                      Measure measure,
                      Combinator combine)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< ReadablePropertyMapConcept<DistanceMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMap,Vertex> ));
     typedef typename property_traits<DistanceMap>::value_type Distance;
-    function_requires< NumericValueConcept<Distance> >();
-    function_requires< DistanceMeasureConcept<Measure,Graph> >();
+    BOOST_CONCEPT_ASSERT(( NumericValueConcept<Distance> ));
+    BOOST_CONCEPT_ASSERT(( DistanceMeasureConcept<Measure,Graph> ));
 
     Distance n = detail::combine_distances(g, dist, combine, Distance(0));
     return measure(n, g);
@@ -90,9 +91,9 @@
 inline typename Measure::result_type
 closeness_centrality(const Graph& g, DistanceMap dist, Measure measure)
 {
-    function_requires< GraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< ReadablePropertyMapConcept<DistanceMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMap,Vertex> ));
     typedef typename property_traits<DistanceMap>::value_type Distance;
 
     return closeness_centrality(g, dist, measure, std::plus<Distance>());
@@ -116,12 +117,12 @@
                            CentralityMap cent,
                            Measure measure)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> ));
     typedef typename property_traits<DistanceMatrixMap>::value_type DistanceMap;
-    function_requires< ReadablePropertyMapConcept<DistanceMap,Vertex> >();
-    function_requires< WritablePropertyMapConcept<CentralityMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMap,Vertex> ));
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<CentralityMap,Vertex> ));
     typedef typename property_traits<DistanceMap>::value_type Distance;
     typedef typename property_traits<CentralityMap>::value_type Centrality;
 
@@ -141,11 +142,11 @@
                             DistanceMatrixMap dist,
                             CentralityMap cent)
 {
-    function_requires< GraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> ));
     typedef typename property_traits<DistanceMatrixMap>::value_type DistanceMap;
-    function_requires< ReadablePropertyMapConcept<DistanceMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMap,Vertex> ));
     typedef typename property_traits<DistanceMap>::value_type Distance;
     typedef typename property_traits<CentralityMap>::value_type Result;
 
Modified: branches/release/boost/graph/clustering_coefficient.hpp
==============================================================================
--- branches/release/boost/graph/clustering_coefficient.hpp	(original)
+++ branches/release/boost/graph/clustering_coefficient.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -11,6 +11,7 @@
 #include <boost/graph/graph_traits.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/lookup_edge.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost
 {
@@ -20,7 +21,7 @@
     inline typename graph_traits<Graph>::degree_size_type
     possible_edges(const Graph& g, std::size_t k, directed_tag)
     {
-        function_requires< GraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
         typedef typename graph_traits<Graph>::degree_size_type T;
         return T(k) * (T(k) - 1);
     }
@@ -42,7 +43,7 @@
                 directed_tag)
 
     {
-        function_requires< AdjacencyMatrixConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<Graph> ));
         return (lookup_edge(u, v, g).second ? 1 : 0) +
                 (lookup_edge(v, u, g).second ? 1 : 0);
     }
@@ -55,7 +56,7 @@
                 typename graph_traits<Graph>::vertex_descriptor v,
                 undirected_tag)
     {
-        function_requires< AdjacencyMatrixConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<Graph> ));
         return lookup_edge(u, v, g).second ? 1 : 0;
     }
 }
@@ -64,7 +65,7 @@
 inline typename graph_traits<Graph>::degree_size_type
 num_paths_through_vertex(const Graph& g, Vertex v)
 {
-    function_requires< AdjacencyGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::directed_category Directed;
     typedef typename graph_traits<Graph>::adjacency_iterator AdjacencyIterator;
 
@@ -81,8 +82,8 @@
 inline typename graph_traits<Graph>::degree_size_type
 num_triangles_on_vertex(const Graph& g, Vertex v)
 {
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::degree_size_type Degree;
     typedef typename graph_traits<Graph>::directed_category Directed;
     typedef typename graph_traits<Graph>::adjacency_iterator AdjacencyIterator;
@@ -119,10 +120,10 @@
 inline typename property_traits<ClusteringMap>::value_type
 all_clustering_coefficients(const Graph& g, ClusteringMap cm)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
-    function_requires< WritablePropertyMapConcept<ClusteringMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<ClusteringMap,Vertex> ));
     typedef typename property_traits<ClusteringMap>::value_type Coefficient;
 
     Coefficient sum(0);
@@ -139,10 +140,10 @@
 inline typename property_traits<ClusteringMap>::value_type
 mean_clustering_coefficient(const Graph& g, ClusteringMap cm)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
-    function_requires< ReadablePropertyMapConcept<ClusteringMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<ClusteringMap,Vertex> ));
     typedef typename property_traits<ClusteringMap>::value_type Coefficient;
 
     Coefficient cc(0);
Modified: branches/release/boost/graph/connected_components.hpp
==============================================================================
--- branches/release/boost/graph/connected_components.hpp	(original)
+++ branches/release/boost/graph/connected_components.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -17,6 +17,7 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/overloading.hpp>
 #include <boost/static_assert.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
@@ -64,7 +65,7 @@
     if (num_vertices(g) == 0) return 0;
 
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< WritablePropertyMapConcept<ComponentMap, Vertex> >();
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<ComponentMap, Vertex> ));
     typedef typename boost::graph_traits<Graph>::directed_category directed;
     BOOST_STATIC_ASSERT((boost::is_same<directed, undirected_tag>::value));
 
@@ -84,7 +85,7 @@
     if (num_vertices(g) == 0) return 0;
 
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< WritablePropertyMapConcept<ComponentMap, Vertex> >();
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<ComponentMap, Vertex> ));
     typedef typename boost::graph_traits<Graph>::directed_category directed;
     // BOOST_STATIC_ASSERT((boost::is_same<directed, undirected_tag>::value));
 
Modified: branches/release/boost/graph/copy.hpp
==============================================================================
--- branches/release/boost/graph/copy.hpp	(original)
+++ branches/release/boost/graph/copy.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -44,6 +44,7 @@
 #include <boost/config.hpp>
 #include <vector>
 #include <boost/graph/graph_traits.hpp>
+#include <boost/graph/reverse_graph.hpp>
 #include <boost/property_map/property_map.hpp>
 #include <boost/graph/named_function_params.hpp>
 #include <boost/graph/breadth_first_search.hpp>
@@ -53,6 +54,21 @@
 
   namespace detail {
 
+    // Hack to make transpose_graph work with the same interface as before
+    template <typename Graph, typename Desc>
+    struct remove_reverse_edge_descriptor {
+      typedef Desc type;
+      static Desc convert(const Desc& d, const Graph&) {return d;}
+    };
+
+    template <typename Graph, typename Desc>
+    struct remove_reverse_edge_descriptor<Graph, reverse_graph_edge_descriptor<Desc> > {
+      typedef Desc type;
+      static Desc convert(const reverse_graph_edge_descriptor<Desc>& d, const Graph& g) {
+        return get(edge_underlying, g, d);
+      }
+    };
+
     // Default edge and vertex property copiers
 
     template <typename Graph1, typename Graph2>
@@ -112,6 +128,7 @@
                         CopyVertex copy_vertex, CopyEdge copy_edge,
                         Orig2CopyVertexIndexMap orig2copy, IndexMap)
       {
+        typedef remove_reverse_edge_descriptor<Graph, typename graph_traits<Graph>::edge_descriptor> cvt;
         typename graph_traits<Graph>::vertex_iterator vi, vi_end;
         for (boost::tie(vi, vi_end) = vertices(g_in); vi != vi_end; ++vi) {
           typename graph_traits<MutableGraph>::vertex_descriptor
@@ -126,7 +143,7 @@
           boost::tie(new_e, inserted) = add_edge(get(orig2copy, source(*ei, g_in)), 
                                                  get(orig2copy, target(*ei, g_in)),
                                                  g_out);
-          copy_edge(*ei, new_e);
+          copy_edge(cvt::convert(*ei, g_in), new_e);
         }
       }
     };
@@ -141,6 +158,7 @@
                         CopyVertex copy_vertex, CopyEdge copy_edge,
                         Orig2CopyVertexIndexMap orig2copy, IndexMap)
       {
+        typedef remove_reverse_edge_descriptor<Graph, typename graph_traits<Graph>::edge_descriptor> cvt;
         typename graph_traits<Graph>::vertex_iterator vi, vi_end;
         for (boost::tie(vi, vi_end) = vertices(g_in); vi != vi_end; ++vi) {
           typename graph_traits<MutableGraph>::vertex_descriptor
@@ -156,7 +174,7 @@
             boost::tie(new_e, inserted) = add_edge(get(orig2copy, source(*ei, g_in)), 
                                                    get(orig2copy, target(*ei, g_in)),
                                                    g_out);
-            copy_edge(*ei, new_e);
+            copy_edge(cvt::convert(*ei, g_in), new_e);
           }
         }
       }
@@ -173,6 +191,7 @@
                         Orig2CopyVertexIndexMap orig2copy,
                         IndexMap index_map)
       {
+        typedef remove_reverse_edge_descriptor<Graph, typename graph_traits<Graph>::edge_descriptor> cvt;
         typedef color_traits<default_color_type> Color;
         std::vector<default_color_type> 
           color(num_vertices(g_in), Color::white());
@@ -192,7 +211,7 @@
               boost::tie(new_e, inserted) = add_edge(get(orig2copy, source(*ei,g_in)),
                                                      get(orig2copy, target(*ei,g_in)),
                                                      g_out);
-              copy_edge(*ei, new_e);
+              copy_edge(cvt::convert(*ei, g_in), new_e);
             }
           }
           color[get(index_map, *vi)] = Color::black();
Modified: branches/release/boost/graph/core_numbers.hpp
==============================================================================
--- branches/release/boost/graph/core_numbers.hpp	(original)
+++ branches/release/boost/graph/core_numbers.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -15,6 +15,7 @@
 #include <boost/pending/indirect_cmp.hpp>
 #include <boost/graph/breadth_first_search.hpp>
 #include <boost/iterator/reverse_iterator.hpp>
+#include <boost/concept/assert.hpp>
 
 /*
  * core_numbers
@@ -46,7 +47,7 @@
     struct CoreNumbersVisitorConcept {
         void constraints()
         {
-            function_requires< CopyConstructibleConcept<Visitor> >();
+            BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Visitor> ));
             vis.examine_vertex(u,g);
             vis.finish_vertex(u,g);
             vis.examine_edge(e,g);
Modified: branches/release/boost/graph/degree_centrality.hpp
==============================================================================
--- branches/release/boost/graph/degree_centrality.hpp	(original)
+++ branches/release/boost/graph/degree_centrality.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -8,6 +8,7 @@
 #define BOOST_GRAPH_DEGREE_CENTRALITY_HPP
 
 #include <boost/graph/graph_concepts.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
@@ -28,7 +29,7 @@
 
     inline degree_type operator ()(vertex_type v, const Graph& g)
     {
-        function_requires< IncidenceGraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
         return out_degree(v, g);
     }
 };
@@ -49,7 +50,7 @@
 
     inline degree_type operator ()(vertex_type v, const Graph& g)
     {
-        function_requires< BidirectionalGraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
         return in_degree(v, g);
     }
 };
@@ -64,7 +65,7 @@
 inline typename Measure::degree_type
 degree_centrality(const Graph& g, Vertex v, Measure measure)
 {
-    function_requires< DegreeMeasureConcept<Measure, Graph> >();
+    BOOST_CONCEPT_ASSERT(( DegreeMeasureConcept<Measure, Graph> ));
     return measure(v, g);
 }
 
@@ -94,10 +95,10 @@
 inline void
 all_degree_centralities(const Graph& g, CentralityMap cent, Measure measure)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
-    function_requires< WritablePropertyMapConcept<CentralityMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<CentralityMap,Vertex> ));
     typedef typename property_traits<CentralityMap>::value_type Centrality;
 
     VertexIterator i, end;
Modified: branches/release/boost/graph/depth_first_search.hpp
==============================================================================
--- branches/release/boost/graph/depth_first_search.hpp	(original)
+++ branches/release/boost/graph/depth_first_search.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -21,6 +21,7 @@
 #include <boost/graph/named_function_params.hpp>
 #include <boost/ref.hpp>
 #include <boost/implicit_cast.hpp>
+#include <boost/concept/assert.hpp>
 
 #include <vector>
 #include <utility>
@@ -31,7 +32,7 @@
   class DFSVisitorConcept {
   public:
     void constraints() {
-      function_requires< CopyConstructibleConcept<Visitor> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Visitor> ));
       vis.initialize_vertex(u, g);
       vis.start_vertex(u, g);
       vis.discover_vertex(u, g);
@@ -80,12 +81,12 @@
        DFSVisitor& vis,
        ColorMap color, TerminatorFunc func = TerminatorFunc())
     {
-      function_requires<IncidenceGraphConcept<IncidenceGraph> >();
-      function_requires<DFSVisitorConcept<DFSVisitor, IncidenceGraph> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<IncidenceGraph> ));
+      BOOST_CONCEPT_ASSERT(( DFSVisitorConcept<DFSVisitor, IncidenceGraph> ));
       typedef typename graph_traits<IncidenceGraph>::vertex_descriptor Vertex;
-      function_requires< ReadWritePropertyMapConcept<ColorMap, Vertex> >();
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ColorMap, Vertex> ));
       typedef typename property_traits<ColorMap>::value_type ColorValue;
-      function_requires< ColorValueConcept<ColorValue> >();
+      BOOST_CONCEPT_ASSERT(( ColorValueConcept<ColorValue> ));
       typedef color_traits<ColorValue> Color;
       typedef typename graph_traits<IncidenceGraph>::out_edge_iterator Iter;
       typedef std::pair<Vertex, std::pair<Iter, Iter> > VertexInfo;
@@ -151,12 +152,12 @@
        DFSVisitor& vis,  // pass-by-reference here, important!
        ColorMap color, TerminatorFunc func)
     {
-      function_requires<IncidenceGraphConcept<IncidenceGraph> >();
-      function_requires<DFSVisitorConcept<DFSVisitor, IncidenceGraph> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<IncidenceGraph> ));
+      BOOST_CONCEPT_ASSERT(( DFSVisitorConcept<DFSVisitor, IncidenceGraph> ));
       typedef typename graph_traits<IncidenceGraph>::vertex_descriptor Vertex;
-      function_requires< ReadWritePropertyMapConcept<ColorMap, Vertex> >();
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ColorMap, Vertex> ));
       typedef typename property_traits<ColorMap>::value_type ColorValue;
-      function_requires< ColorValueConcept<ColorValue> >();
+      BOOST_CONCEPT_ASSERT(( ColorValueConcept<ColorValue> ));
       typedef color_traits<ColorValue> Color;
       typename graph_traits<IncidenceGraph>::out_edge_iterator ei, ei_end;
 
@@ -187,7 +188,7 @@
                      typename graph_traits<VertexListGraph>::vertex_descriptor start_vertex)
   {
     typedef typename graph_traits<VertexListGraph>::vertex_descriptor Vertex;
-    function_requires<DFSVisitorConcept<DFSVisitor, VertexListGraph> >();
+    BOOST_CONCEPT_ASSERT(( DFSVisitorConcept<DFSVisitor, VertexListGraph> ));
     typedef typename property_traits<ColorMap>::value_type ColorValue;
     typedef color_traits<ColorValue> Color;
 
Modified: branches/release/boost/graph/detail/geodesic.hpp
==============================================================================
--- branches/release/boost/graph/detail/geodesic.hpp	(original)
+++ branches/release/boost/graph/detail/geodesic.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -11,6 +11,7 @@
 #include <boost/config.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/numeric_values.hpp>
+#include <boost/concept/assert.hpp>
 
 // TODO: Should this really be in detail?
 
@@ -51,13 +52,13 @@
                         Combinator combine,
                         Distance init)
     {
-        function_requires< VertexListGraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
         typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
         typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
-        function_requires< ReadablePropertyMapConcept<DistanceMap,Vertex> >();
-        function_requires< NumericValueConcept<Distance> >();
+        BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMap,Vertex> ));
+        BOOST_CONCEPT_ASSERT(( NumericValueConcept<Distance> ));
         typedef numeric_values<Distance> DistanceNumbers;
-        function_requires< AdaptableBinaryFunction<Combinator,Distance,Distance,Distance> >();
+        BOOST_CONCEPT_ASSERT(( AdaptableBinaryFunction<Combinator,Distance,Distance,Distance> ));
 
         // If there's ever an infinite distance, then we simply return
         // infinity. Note that this /will/ include the a non-zero
Modified: branches/release/boost/graph/dijkstra_shortest_paths.hpp
==============================================================================
--- branches/release/boost/graph/dijkstra_shortest_paths.hpp	(original)
+++ branches/release/boost/graph/dijkstra_shortest_paths.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -30,6 +30,7 @@
 #include <boost/property_map/property_map.hpp>
 #include <boost/property_map/vector_property_map.hpp>
 #include <boost/type_traits.hpp>
+#include <boost/concept/assert.hpp>
 
 #ifdef BOOST_GRAPH_DIJKSTRA_TESTING
 #  include <boost/pending/mutable_queue.hpp>
@@ -68,7 +69,7 @@
   template <class Visitor, class Graph>
   struct DijkstraVisitorConcept {
     void constraints() {
-      function_requires< CopyConstructibleConcept<Visitor> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Visitor> ));
       vis.initialize_vertex(u, g);
       vis.discover_vertex(u, g);
       vis.examine_vertex(u, g);
Modified: branches/release/boost/graph/distributed/concepts.hpp
==============================================================================
--- branches/release/boost/graph/distributed/concepts.hpp	(original)
+++ branches/release/boost/graph/distributed/concepts.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -21,6 +21,7 @@
 #include <boost/version.hpp>
 #include <boost/graph/graph_traits.hpp>
 #include <boost/graph/graph_concepts.hpp>
+#include <boost/concept/assert.hpp>
 
 #if BOOST_VERSION >= 103500
 #  include <boost/concept/detail/concept_def.hpp>
@@ -46,10 +47,10 @@
   typedef typename graph_traits<G>::traversal_category
     traversal_category;
   void constraints() {
-    function_requires< GraphConcept<G> >();
-    function_requires< MultiPassInputIteratorConcept<vertex_iterator> >();
-    function_requires< ConvertibleConcept<traversal_category,
-      distributed_vertex_list_graph_tag> >();
+    BOOST_CONCEPT_ASSERT(( GraphConcept<G> ));
+    BOOST_CONCEPT_ASSERT(( MultiPassInputIteratorConcept<vertex_iterator> ));
+    BOOST_CONCEPT_ASSERT(( ConvertibleConcept<traversal_category,
+      distributed_vertex_list_graph_tag> ));
 
 #ifdef BOOST_VECTOR_AS_GRAPH_GRAPH_ADL_HACK
     // dwa 2003/7/11 -- This clearly shouldn't be necessary, but if
@@ -92,13 +93,13 @@
   typedef typename graph_traits<G>::traversal_category
     traversal_category;
   void constraints() {
-    function_requires< GraphConcept<G> >();
-    function_requires< MultiPassInputIteratorConcept<edge_iterator> >();
-    function_requires< DefaultConstructibleConcept<edge_descriptor> >();
-    function_requires< EqualityComparableConcept<edge_descriptor> >();
-    function_requires< AssignableConcept<edge_descriptor> >();
-    function_requires< ConvertibleConcept<traversal_category,
-      distributed_edge_list_graph_tag> >();
+    BOOST_CONCEPT_ASSERT(( GraphConcept<G> ));
+    BOOST_CONCEPT_ASSERT(( MultiPassInputIteratorConcept<edge_iterator> ));
+    BOOST_CONCEPT_ASSERT(( DefaultConstructibleConcept<edge_descriptor> ));
+    BOOST_CONCEPT_ASSERT(( EqualityComparableConcept<edge_descriptor> ));
+    BOOST_CONCEPT_ASSERT(( AssignableConcept<edge_descriptor> ));
+    BOOST_CONCEPT_ASSERT(( ConvertibleConcept<traversal_category,
+      distributed_edge_list_graph_tag> ));
 
     p = edges(g);
     e = *p.first;
Modified: branches/release/boost/graph/distributed/hohberg_biconnected_components.hpp
==============================================================================
--- branches/release/boost/graph/distributed/hohberg_biconnected_components.hpp	(original)
+++ branches/release/boost/graph/distributed/hohberg_biconnected_components.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -44,6 +44,7 @@
 #include <vector>
 #include <boost/graph/parallel/algorithm.hpp>
 #include <boost/graph/distributed/connected_components.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost { namespace graph { namespace distributed {
 
@@ -908,7 +909,7 @@
                     undirected_tag>::value));
 
   // The graph must model Incidence Graph
-  function_requires< IncidenceGraphConcept<Graph> >();
+  BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
 
   typedef typename graph_traits<Graph>::edges_size_type edges_size_type;
   typedef typename graph_traits<Graph>::degree_size_type degree_size_type;
Modified: branches/release/boost/graph/dominator_tree.hpp
==============================================================================
--- branches/release/boost/graph/dominator_tree.hpp	(original)
+++ branches/release/boost/graph/dominator_tree.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -13,6 +13,7 @@
 #include <deque>
 #include <set>
 #include <boost/graph/depth_first_search.hpp>
+#include <boost/concept/assert.hpp>
 
 // Dominator tree computation
 
@@ -244,7 +245,7 @@
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertices_size_type VerticesSizeType;
 
-    function_requires< BidirectionalGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
 
     const VerticesSizeType numOfVertices = num_vertices(g);
     if (numOfVertices == 0) return;
@@ -299,7 +300,7 @@
     // Typedefs and concept check
     typedef typename graph_traits<Graph>::vertices_size_type VerticesSizeType;
 
-    function_requires< BidirectionalGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
 
     // 1. Depth first visit
     const VerticesSizeType numOfVertices = num_vertices(g);
@@ -388,7 +389,7 @@
       iterator_property_map<typename std::vector< std::set<Vertex> >::iterator,
                             IndexMap> vertexSetMap;
 
-    function_requires<BidirectionalGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
 
     // 1. Finding dominator
     // 1.1. Initialize
Modified: branches/release/boost/graph/eccentricity.hpp
==============================================================================
--- branches/release/boost/graph/eccentricity.hpp	(original)
+++ branches/release/boost/graph/eccentricity.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -10,6 +10,7 @@
 #include <boost/utility.hpp>
 #include <boost/config.hpp>
 #include <boost/graph/detail/geodesic.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost
 {
@@ -19,9 +20,9 @@
 inline typename property_traits<DistanceMap>::value_type
 eccentricity(const Graph& g, DistanceMap dist, Combinator combine)
 {
-    function_requires< GraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< ReadablePropertyMapConcept<DistanceMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMap,Vertex> ));
     typedef typename property_traits<DistanceMap>::value_type Distance;
 
     return detail::combine_distances(g, dist, combine, Distance(0));
@@ -31,9 +32,9 @@
 inline typename property_traits<DistanceMap>::value_type
 eccentricity(const Graph& g, DistanceMap dist)
 {
-    function_requires< GraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< ReadablePropertyMapConcept<DistanceMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMap,Vertex> ));
     typedef typename property_traits<DistanceMap>::value_type Distance;
 
     return eccentricity(g, dist, detail::maximize<Distance>());
@@ -44,12 +45,12 @@
                     typename property_traits<EccentricityMap>::value_type>
 all_eccentricities(const Graph& g, const DistanceMatrix& dist, EccentricityMap ecc)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
-    function_requires< ReadablePropertyMapConcept<DistanceMatrix,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMatrix,Vertex> ));
     typedef typename property_traits<DistanceMatrix>::value_type DistanceMap;
-    function_requires< WritablePropertyMapConcept<EccentricityMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<EccentricityMap,Vertex> ));
     typedef typename property_traits<EccentricityMap>::value_type Eccentricity;
     BOOST_USING_STD_MIN();
     BOOST_USING_STD_MAX();
@@ -76,10 +77,10 @@
                     typename property_traits<EccentricityMap>::value_type>
 radius_and_diameter(const Graph& g, EccentricityMap ecc)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
-    function_requires< ReadablePropertyMapConcept<EccentricityMap, Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<EccentricityMap, Vertex> ));
     typedef typename property_traits<EccentricityMap>::value_type Eccentricity;
     BOOST_USING_STD_MIN();
     BOOST_USING_STD_MAX();
Modified: branches/release/boost/graph/floyd_warshall_shortest.hpp
==============================================================================
--- branches/release/boost/graph/floyd_warshall_shortest.hpp	(original)
+++ branches/release/boost/graph/floyd_warshall_shortest.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -34,6 +34,7 @@
 #include <boost/graph/named_function_params.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/relax.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost
 {
@@ -84,7 +85,7 @@
     const BinaryFunction& combine, const Infinity& inf, 
     const Zero& zero)
   {
-    function_requires<VertexListGraphConcept<VertexListGraph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<VertexListGraph> ));
   
     return detail::floyd_warshall_dispatch(g, d, compare, combine, 
     inf, zero);
@@ -101,9 +102,9 @@
     const BinaryPredicate& compare, const BinaryFunction& combine, 
     const Infinity& inf, const Zero& zero)
   {
-    function_requires<VertexListGraphConcept<VertexAndEdgeListGraph> >();
-    function_requires<EdgeListGraphConcept<VertexAndEdgeListGraph> >();
-    function_requires<IncidenceGraphConcept<VertexAndEdgeListGraph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<VertexAndEdgeListGraph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<VertexAndEdgeListGraph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<VertexAndEdgeListGraph> ));
   
     typename graph_traits<VertexAndEdgeListGraph>::vertex_iterator 
       firstv, lastv, firstv2, lastv2;
Modified: branches/release/boost/graph/geodesic_distance.hpp
==============================================================================
--- branches/release/boost/graph/geodesic_distance.hpp	(original)
+++ branches/release/boost/graph/geodesic_distance.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -9,6 +9,7 @@
 
 #include <boost/graph/detail/geodesic.hpp>
 #include <boost/graph/exterior_property.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost
 {
@@ -25,10 +26,10 @@
 
     result_type operator ()(distance_type d, const Graph& g)
     {
-        function_requires< VertexListGraphConcept<Graph> >();
-        function_requires< NumericValueConcept<DistanceType> >();
-        function_requires< NumericValueConcept<ResultType> >();
-        function_requires< AdaptableBinaryFunctionConcept<Divides,ResultType,ResultType,ResultType> >();
+        BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+        BOOST_CONCEPT_ASSERT(( NumericValueConcept<DistanceType> ));
+        BOOST_CONCEPT_ASSERT(( NumericValueConcept<ResultType> ));
+        BOOST_CONCEPT_ASSERT(( AdaptableBinaryFunctionConcept<Divides,ResultType,ResultType,ResultType> ));
 
         return (d == base_type::infinite_distance())
             ? base_type::infinite_result()
@@ -69,8 +70,8 @@
 
     inline result_type operator ()(distance_type d, const Graph& g)
     {
-        function_requires< VertexListGraphConcept<Graph> >();
-        function_requires< NumericValueConcept<DistanceType> >();
+        BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+        BOOST_CONCEPT_ASSERT(( NumericValueConcept<DistanceType> ));
 
         if(d == base_type::infinite_distance()) {
             return base_type::infinite_result();
@@ -99,7 +100,7 @@
                 Measure measure,
                 Combinator combine)
 {
-    function_requires< DistanceMeasureConcept<Measure,Graph> >();
+    BOOST_CONCEPT_ASSERT(( DistanceMeasureConcept<Measure,Graph> ));
     typedef typename Measure::distance_type Distance;
 
     Distance n = detail::combine_distances(g, dist, combine, Distance(0));
@@ -112,7 +113,7 @@
 inline typename Measure::result_type
 mean_geodesic(const Graph& g, DistanceMap dist, Measure measure)
 {
-    function_requires< DistanceMeasureConcept<Measure,Graph> >();
+    BOOST_CONCEPT_ASSERT(( DistanceMeasureConcept<Measure,Graph> ));
     typedef typename Measure::distance_type Distance;
 
     return mean_geodesic(g, dist, measure, std::plus<Distance>());
@@ -139,15 +140,15 @@
                     GeodesicMap geo,
                     Measure measure)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
-    function_requires< ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> ));
     typedef typename property_traits<DistanceMatrixMap>::value_type DistanceMap;
-    function_requires< DistanceMeasureConcept<Measure,Graph> >();
+    BOOST_CONCEPT_ASSERT(( DistanceMeasureConcept<Measure,Graph> ));
     typedef typename Measure::result_type Result;
-    function_requires< WritablePropertyMapConcept<GeodesicMap,Vertex> >();
-    function_requires< NumericValueConcept<Result> >();
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<GeodesicMap,Vertex> ));
+    BOOST_CONCEPT_ASSERT(( NumericValueConcept<Result> ));
 
     // NOTE: We could compute the mean geodesic here by performing additional
     // computations (i.e., adding and dividing). However, I don't really feel
@@ -178,11 +179,11 @@
 inline typename property_traits<GeodesicMap>::value_type
 all_mean_geodesics(const Graph& g, DistanceMatrixMap dist, GeodesicMap geo)
 {
-    function_requires< GraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-    function_requires< ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<DistanceMatrixMap,Vertex> ));
     typedef typename property_traits<DistanceMatrixMap>::value_type DistanceMap;
-    function_requires< WritablePropertyMapConcept<GeodesicMap,Vertex> >();
+    BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<GeodesicMap,Vertex> ));
     typedef typename property_traits<GeodesicMap>::value_type Result;
 
     return all_mean_geodesics(g, dist, geo, measure_mean_geodesic<Result>(g, DistanceMap()));
@@ -193,7 +194,7 @@
 inline typename Measure::result_type
 small_world_distance(const Graph& g, GeodesicMap geo, Measure measure)
 {
-    function_requires< DistanceMeasureConcept<Measure,Graph> >();
+    BOOST_CONCEPT_ASSERT(( DistanceMeasureConcept<Measure,Graph> ));
     typedef typename Measure::result_type Result;
 
     Result sum = detail::combine_distances(g, geo, std::plus<Result>(), Result(0));
Modified: branches/release/boost/graph/graph_concepts.hpp
==============================================================================
--- branches/release/boost/graph/graph_concepts.hpp	(original)
+++ branches/release/boost/graph/graph_concepts.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -21,6 +21,7 @@
 #include <boost/graph/buffer_concepts.hpp>
 #include <boost/concept_check.hpp>
 #include <boost/detail/workaround.hpp>
+#include <boost/concept/assert.hpp>
 
 #include <boost/concept/detail/concept_def.hpp>
 namespace boost
@@ -529,8 +530,8 @@
     {
         BOOST_CONCEPT_USAGE(NumericValue)
         {
-            function_requires< DefaultConstructible<Numeric> >();
-            function_requires< CopyConstructible<Numeric> >();
+            BOOST_CONCEPT_ASSERT(( DefaultConstructible<Numeric> ));
+            BOOST_CONCEPT_ASSERT(( CopyConstructible<Numeric> ));
             numeric_values<Numeric>::zero();
             numeric_values<Numeric>::infinity();
         }
Modified: branches/release/boost/graph/howard_cycle_ratio.hpp
==============================================================================
--- branches/release/boost/graph/howard_cycle_ratio.hpp	(original)
+++ branches/release/boost/graph/howard_cycle_ratio.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -20,6 +20,7 @@
 #include <boost/property_map/property_map.hpp>
 #include <boost/graph/graph_traits.hpp>
 #include <boost/graph/graph_concepts.hpp>
+#include <boost/concept/assert.hpp>
 
 /** @file howard_cycle_ratio.hpp
  * @brief The implementation of the maximum/minimum cycle ratio/mean algorithm.
@@ -477,13 +478,13 @@
     {
       typedef typename graph_traits<TG>::directed_category DirCat;
       BOOST_STATIC_ASSERT((is_convertible<DirCat*, directed_tag*>::value == true));
-      function_requires< IncidenceGraphConcept<TG> >();
-      function_requires< VertexListGraphConcept<TG> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<TG> ));
+      BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<TG> ));
       typedef typename graph_traits<TG>::vertex_descriptor Vertex;
-      function_requires< ReadablePropertyMapConcept<TVIM, Vertex> >();
+      BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<TVIM, Vertex> ));
       typedef typename graph_traits<TG>::edge_descriptor Edge;
-      function_requires< ReadablePropertyMapConcept<TEW1, Edge> >();
-      function_requires< ReadablePropertyMapConcept<TEW2, Edge> >();
+      BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<TEW1, Edge> ));
+      BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<TEW2, Edge> ));
 
       if(pcc == 0) {
           return detail::mcr_howard<FT,TG, TVIM, TEW1, TEW2>(
Modified: branches/release/boost/graph/isomorphism.hpp
==============================================================================
--- branches/release/boost/graph/isomorphism.hpp	(original)
+++ branches/release/boost/graph/isomorphism.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -15,6 +15,7 @@
 #include <boost/utility.hpp>
 #include <boost/detail/algorithm.hpp>
 #include <boost/pending/indirect_cmp.hpp> // for make_indirect_pmap
+#include <boost/concept/assert.hpp>
 
 #ifndef BOOST_GRAPH_ITERATION_MACROS_HPP
 #define BOOST_ISO_INCLUDED_ITER_MACROS // local macro, see bottom of file
@@ -322,31 +323,31 @@
 
   {
     // Graph requirements
-    function_requires< VertexListGraphConcept<Graph1> >();
-    function_requires< EdgeListGraphConcept<Graph1> >();
-    function_requires< VertexListGraphConcept<Graph2> >();
-    function_requires< BidirectionalGraphConcept<Graph2> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph1> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph1> ));
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph2> ));
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph2> ));
     
     typedef typename graph_traits<Graph1>::vertex_descriptor vertex1_t;
     typedef typename graph_traits<Graph2>::vertex_descriptor vertex2_t;
     typedef typename graph_traits<Graph1>::vertices_size_type size_type;
     
     // Vertex invariant requirement
-    function_requires< AdaptableUnaryFunctionConcept<Invariant1,
-      size_type, vertex1_t> >();
-    function_requires< AdaptableUnaryFunctionConcept<Invariant2,
-      size_type, vertex2_t> >();
+    BOOST_CONCEPT_ASSERT(( AdaptableUnaryFunctionConcept<Invariant1,
+      size_type, vertex1_t> ));
+    BOOST_CONCEPT_ASSERT(( AdaptableUnaryFunctionConcept<Invariant2,
+      size_type, vertex2_t> ));
     
     // Property map requirements
-    function_requires< ReadWritePropertyMapConcept<IsoMapping, vertex1_t> >();
+    BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<IsoMapping, vertex1_t> ));
     typedef typename property_traits<IsoMapping>::value_type IsoMappingValue;
     BOOST_STATIC_ASSERT((is_same<IsoMappingValue, vertex2_t>::value));
     
-    function_requires< ReadablePropertyMapConcept<IndexMap1, vertex1_t> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap1, vertex1_t> ));
     typedef typename property_traits<IndexMap1>::value_type IndexMap1Value;
     BOOST_STATIC_ASSERT((is_convertible<IndexMap1Value, size_type>::value));
     
-    function_requires< ReadablePropertyMapConcept<IndexMap2, vertex2_t> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap2, vertex2_t> ));
     typedef typename property_traits<IndexMap2>::value_type IndexMap2Value;
     BOOST_STATIC_ASSERT((is_convertible<IndexMap2Value, size_type>::value));
     
Modified: branches/release/boost/graph/johnson_all_pairs_shortest.hpp
==============================================================================
--- branches/release/boost/graph/johnson_all_pairs_shortest.hpp	(original)
+++ branches/release/boost/graph/johnson_all_pairs_shortest.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -29,6 +29,7 @@
 #include <boost/graph/dijkstra_shortest_paths.hpp>
 #include <boost/graph/adjacency_list.hpp>
 #include <boost/type_traits/same_traits.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
@@ -44,8 +45,8 @@
   {
     typedef graph_traits<VertexAndEdgeListGraph> Traits1;
     typedef typename property_traits<Weight>::value_type DT;
-    function_requires< BasicMatrixConcept<DistanceMatrix,
-      typename Traits1::vertices_size_type, DT> >();
+    BOOST_CONCEPT_ASSERT(( BasicMatrixConcept<DistanceMatrix,
+      typename Traits1::vertices_size_type, DT> ));
 
     typedef typename Traits1::directed_category DirCat;
     bool is_undirected = is_same<DirCat, undirected_tag>::value;
Modified: branches/release/boost/graph/kruskal_min_spanning_tree.hpp
==============================================================================
--- branches/release/boost/graph/kruskal_min_spanning_tree.hpp	(original)
+++ branches/release/boost/graph/kruskal_min_spanning_tree.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -28,6 +28,7 @@
 #include <boost/graph/named_function_params.hpp>
 #include <boost/pending/disjoint_sets.hpp>
 #include <boost/pending/indirect_cmp.hpp>
+#include <boost/concept/assert.hpp>
 
 
 namespace boost {
@@ -51,18 +52,18 @@
       if (num_vertices(G) == 0) return; // Nothing to do in this case
       typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
       typedef typename graph_traits<Graph>::edge_descriptor Edge;
-      function_requires<VertexListGraphConcept<Graph> >();
-      function_requires<EdgeListGraphConcept<Graph> >();
-      function_requires<OutputIteratorConcept<OutputIterator, Edge> >();
-      function_requires<ReadWritePropertyMapConcept<Rank, Vertex> >();
-      function_requires<ReadWritePropertyMapConcept<Parent, Vertex> >();
-      function_requires<ReadablePropertyMapConcept<Weight, Edge> >();
+      BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+      BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+      BOOST_CONCEPT_ASSERT(( OutputIteratorConcept<OutputIterator, Edge> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<Rank, Vertex> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<Parent, Vertex> ));
+      BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<Weight, Edge> ));
       typedef typename property_traits<Weight>::value_type W_value;
       typedef typename property_traits<Rank>::value_type R_value;
       typedef typename property_traits<Parent>::value_type P_value;
-      function_requires<ComparableConcept<W_value> >();
-      function_requires<ConvertibleConcept<P_value, Vertex> >();
-      function_requires<IntegerConcept<R_value> >();
+      BOOST_CONCEPT_ASSERT(( ComparableConcept<W_value> ));
+      BOOST_CONCEPT_ASSERT(( ConvertibleConcept<P_value, Vertex> ));
+      BOOST_CONCEPT_ASSERT(( IntegerConcept<R_value> ));
 
       disjoint_sets<Rank, Parent>  dset(rank, parent);
 
Modified: branches/release/boost/graph/neighbor_bfs.hpp
==============================================================================
--- branches/release/boost/graph/neighbor_bfs.hpp	(original)
+++ branches/release/boost/graph/neighbor_bfs.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -24,13 +24,14 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/visitors.hpp>
 #include <boost/graph/named_function_params.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
   template <class Visitor, class Graph>
   struct NeighborBFSVisitorConcept {
     void constraints() {
-      function_requires< CopyConstructibleConcept<Visitor> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Visitor> ));
       vis.initialize_vertex(u, g);
       vis.discover_vertex(u, g);
       vis.examine_vertex(u, g);
@@ -133,13 +134,13 @@
        Buffer& Q, BFSVisitor vis, ColorMap color)
 
     {
-      function_requires< BidirectionalGraphConcept<BidirectionalGraph> >();
+      BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<BidirectionalGraph> ));
       typedef graph_traits<BidirectionalGraph> GTraits;
       typedef typename GTraits::vertex_descriptor Vertex;
       typedef typename GTraits::edge_descriptor Edge;
-      function_requires< 
-        NeighborBFSVisitorConcept<BFSVisitor, BidirectionalGraph> >();
-      function_requires< ReadWritePropertyMapConcept<ColorMap, Vertex> >();
+      BOOST_CONCEPT_ASSERT(( 
+        NeighborBFSVisitorConcept<BFSVisitor, BidirectionalGraph> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ColorMap, Vertex> ));
       typedef typename property_traits<ColorMap>::value_type ColorValue;
       typedef color_traits<ColorValue> Color;
       
Modified: branches/release/boost/graph/properties.hpp
==============================================================================
--- branches/release/boost/graph/properties.hpp	(original)
+++ branches/release/boost/graph/properties.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -115,6 +115,7 @@
   BOOST_DEF_PROPERTY(vertex, lowpoint);
   BOOST_DEF_PROPERTY(vertex, potential);
   BOOST_DEF_PROPERTY(vertex, update);
+  BOOST_DEF_PROPERTY(vertex, underlying);
   BOOST_DEF_PROPERTY(edge, reverse);
   BOOST_DEF_PROPERTY(edge, capacity);
   BOOST_DEF_PROPERTY(edge, flow);
@@ -123,6 +124,7 @@
   BOOST_DEF_PROPERTY(edge, discover_time);
   BOOST_DEF_PROPERTY(edge, update);
   BOOST_DEF_PROPERTY(edge, finished);
+  BOOST_DEF_PROPERTY(edge, underlying);
   BOOST_DEF_PROPERTY(graph, visitor);
 
   // These tags are used for property bundles
Modified: branches/release/boost/graph/reverse_graph.hpp
==============================================================================
--- branches/release/boost/graph/reverse_graph.hpp	(original)
+++ branches/release/boost/graph/reverse_graph.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -27,17 +27,32 @@
     template <typename EdgeDesc>
     class reverse_graph_edge_descriptor {
       public:
-      EdgeDesc underlying_desc;
+      EdgeDesc underlying_descx; // Odd name is because this needs to be public but shouldn't be exposed to users anymore
+
+      private:
+      typedef EdgeDesc base_descriptor_type;
 
       public:
-      explicit reverse_graph_edge_descriptor(const EdgeDesc& underlying_desc = EdgeDesc())
-        : underlying_desc(underlying_desc) {}
+      explicit reverse_graph_edge_descriptor(const EdgeDesc& underlying_descx = EdgeDesc())
+        : underlying_descx(underlying_descx) {}
 
       friend bool operator==(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) {
-        return a.underlying_desc == b.underlying_desc;
+        return a.underlying_descx == b.underlying_descx;
       }
       friend bool operator!=(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) {
-        return a.underlying_desc != b.underlying_desc;
+        return a.underlying_descx != b.underlying_descx;
+      }
+      friend bool operator<(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) {
+        return a.underlying_descx < b.underlying_descx;
+      }
+      friend bool operator>(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) {
+        return a.underlying_descx > b.underlying_descx;
+      }
+      friend bool operator<=(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) {
+        return a.underlying_descx <= b.underlying_descx;
+      }
+      friend bool operator>=(const reverse_graph_edge_descriptor& a, const reverse_graph_edge_descriptor& b) {
+        return a.underlying_descx >= b.underlying_descx;
       }
     };
 
@@ -58,6 +73,18 @@
                             make_transform_iterator(ip.second, reverse_graph_edge_descriptor_maker<EdgeDesc>()));
     }
 
+    // Get the underlying descriptor from a vertex or edge descriptor
+    template <typename Desc>
+    struct get_underlying_descriptor_from_reverse_descriptor {
+      typedef Desc type;
+      static Desc convert(const Desc& d) {return d;}
+    };
+    template <typename Desc>
+    struct get_underlying_descriptor_from_reverse_descriptor<reverse_graph_edge_descriptor<Desc> > {
+      typedef Desc type;
+      static Desc convert(const reverse_graph_edge_descriptor<Desc>& d) {return d.underlying_descx;}
+    };
+
     template <bool isEdgeList> struct choose_rev_edge_iter { };
     template <> struct choose_rev_edge_iter<true> {
       template <class G> struct bind_ {
@@ -97,8 +124,7 @@
     typedef transform_iterator<detail::reverse_graph_edge_descriptor_maker<typename Traits::edge_descriptor>, typename Traits::out_edge_iterator> in_edge_iterator;
 
     // AdjacencyGraph requirements
-  typedef typename adjacency_iterator_generator<Self,
-    vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
+    typedef typename adjacency_iterator_generator<Self, vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
 
     // VertexListGraph requirements
     typedef typename Traits::vertex_iterator vertex_iterator;
@@ -117,14 +143,20 @@
 #ifndef BOOST_GRAPH_NO_BUNDLED_PROPERTIES
     // Bundled properties support
     template<typename Descriptor>
-    typename graph::detail::bundled_result<BidirectionalGraph, Descriptor>::type&
+    typename graph::detail::bundled_result<
+               BidirectionalGraph,
+               typename detail::get_underlying_descriptor_from_reverse_descriptor<Descriptor>::type
+             >::type&
     operator[](Descriptor x)
-    { return m_g[x]; }
+    { return m_g[detail::get_underlying_descriptor_from_reverse_descriptor<Descriptor>::convert(x)]; }
 
     template<typename Descriptor>
-    typename graph::detail::bundled_result<BidirectionalGraph, Descriptor>::type const&
+    typename graph::detail::bundled_result<
+               BidirectionalGraph,
+               typename detail::get_underlying_descriptor_from_reverse_descriptor<Descriptor>::type
+             >::type const&
     operator[](Descriptor x) const
-    { return m_g[x]; }
+    { return m_g[detail::get_underlying_descriptor_from_reverse_descriptor<Descriptor>::convert(x)]; }
 #endif // BOOST_GRAPH_NO_BUNDLED_PROPERTIES
 
     static vertex_descriptor null_vertex()
@@ -236,13 +268,15 @@
 }
 
 template <class BidirectionalGraph, class GRef>
-inline std::pair<typename graph_traits<BidirectionalGraph>::edge_descriptor,
-                 bool>
+inline std::pair< typename graph_traits<reverse_graph<BidirectionalGraph,GRef> >::edge_descriptor,
+                  bool>
 edge(const typename graph_traits<BidirectionalGraph>::vertex_descriptor u,
      const typename graph_traits<BidirectionalGraph>::vertex_descriptor v,
      const reverse_graph<BidirectionalGraph,GRef>& g)
 {
-    return edge(v, u, g.m_g);
+    typedef typename graph_traits<BidirectionalGraph>::edge_descriptor underlying_edge_descriptor;
+    std::pair<underlying_edge_descriptor, bool> e = edge(v, u, g.m_g);
+    return std::make_pair(detail::reverse_graph_edge_descriptor<underlying_edge_descriptor>(e.first), e.second);
 }
 
 template <class BidirectionalGraph, class GRef>
@@ -280,14 +314,14 @@
 inline typename graph_traits<BidirectionalGraph>::vertex_descriptor
 source(const detail::reverse_graph_edge_descriptor<Edge>& e, const reverse_graph<BidirectionalGraph,GRef>& g)
 {
-    return target(e.underlying_desc, g.m_g);
+    return target(e.underlying_descx, g.m_g);
 }
 
 template <class Edge, class BidirectionalGraph, class GRef>
 inline typename graph_traits<BidirectionalGraph>::vertex_descriptor
 target(const detail::reverse_graph_edge_descriptor<Edge>& e, const reverse_graph<BidirectionalGraph,GRef>& g)
 {
-    return source(e.underlying_desc, g.m_g);
+    return source(e.underlying_descx, g.m_g);
 }
 
 
@@ -309,18 +343,18 @@
     friend reference
     get(const reverse_graph_edge_property_map& m,
         const key_type& e) {
-      return get(m.underlying_pm, e.underlying_desc);
+      return get(m.underlying_pm, e.underlying_descx);
     }
 
     friend void
     put(const reverse_graph_edge_property_map& m,
         const key_type& e,
         const value_type& v) {
-      put(m.underlying_pm, e.underlying_desc, v);
+      put(m.underlying_pm, e.underlying_descx, v);
     }
 
-    reference operator[](const key_type& k) {
-      return (this->underlying_pm)[k.underlying_desc];
+    reference operator[](const key_type& k) const {
+      return (this->underlying_pm)[k.underlying_descx];
     }
   };
 
@@ -388,6 +422,62 @@
   put(get(p, g), k, val);
 }
 
+// Get the underlying descriptor from a reverse_graph's wrapped edge descriptor
+
+namespace detail {
+  template <class E>
+  struct underlying_edge_desc_map_type {
+    E operator[](const reverse_graph_edge_descriptor<E>& k) const {
+      return k.underlying_descx;
+    }
+  };
+
+  template <class E>
+  E
+  get(underlying_edge_desc_map_type<E> m,
+      const reverse_graph_edge_descriptor<E>& k)
+  {
+    return m[k];
+  }
+};
+
+template <class E>
+struct property_traits<detail::underlying_edge_desc_map_type<E> > {
+  typedef detail::reverse_graph_edge_descriptor<E> key_type;
+  typedef E value_type;
+  typedef const E& reference;
+  typedef readable_property_map_tag category;
+};
+
+template <class Graph, class GRef>
+struct property_map<reverse_graph<Graph, GRef>, edge_underlying_t> {
+  private:
+  typedef typename graph_traits<Graph>::edge_descriptor ed;
+
+  public:
+  typedef detail::underlying_edge_desc_map_type<ed> type;
+  typedef detail::underlying_edge_desc_map_type<ed> const_type;
+};
+
+template <class Graph, class GRef>
+detail::underlying_edge_desc_map_type<typename graph_traits<Graph>::edge_descriptor>
+get(edge_underlying_t,
+    const reverse_graph<Graph,GRef>& g)
+{
+  return detail::underlying_edge_desc_map_type<typename graph_traits<Graph>::edge_descriptor>();
+}
+
+template <class Graph, class GRef>
+typename graph_traits<Graph>::edge_descriptor
+get(edge_underlying_t,
+    const reverse_graph<Graph,GRef>& g,
+    const typename graph_traits<reverse_graph<Graph, GRef> >::edge_descriptor& k)
+{
+  return k.underlying_descx;
+}
+
+// Access to wrapped graph's graph properties
+
 template<typename BidirectionalGraph, typename GRef, typename Tag,
          typename Value>
 inline void
Modified: branches/release/boost/graph/strong_components.hpp
==============================================================================
--- branches/release/boost/graph/strong_components.hpp	(original)
+++ branches/release/boost/graph/strong_components.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -18,6 +18,7 @@
 #include <boost/type_traits/conversion_traits.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/graph/overloading.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
@@ -93,11 +94,11 @@
        const bgl_named_params<P, T, R>& params)
     {
       typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
-      function_requires< ReadWritePropertyMapConcept<ComponentMap, Vertex> >();
-      function_requires< ReadWritePropertyMapConcept<RootMap, Vertex> >();
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<ComponentMap, Vertex> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<RootMap, Vertex> ));
       typedef typename property_traits<RootMap>::value_type RootV;
-      function_requires< ConvertibleConcept<RootV, Vertex> >();
-      function_requires< ReadWritePropertyMapConcept<DiscoverTime, Vertex> >();
+      BOOST_CONCEPT_ASSERT(( ConvertibleConcept<RootV, Vertex> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<DiscoverTime, Vertex> ));
 
       typename property_traits<ComponentMap>::value_type total = 0;
 
@@ -282,7 +283,7 @@
   kosaraju_strong_components(Graph& G, ComponentsMap c,
                              FinishTime finish_time, ColorMap color)
   {
-    function_requires< MutableGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( MutableGraphConcept<Graph> ));
     // ...
     
     typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
Modified: branches/release/boost/graph/tiernan_all_cycles.hpp
==============================================================================
--- branches/release/boost/graph/tiernan_all_cycles.hpp	(original)
+++ branches/release/boost/graph/tiernan_all_cycles.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -13,6 +13,7 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/graph_traits.hpp>
 #include <boost/graph/properties.hpp>
+#include <boost/concept/assert.hpp>
 
 #include <boost/concept/detail/concept_def.hpp>
 namespace boost {
@@ -156,8 +157,8 @@
                     const Path& p,
                     const ClosedMatrix& m)
     {
-        function_requires< IncidenceGraphConcept<Graph> >();
-        function_requires< VertexIndexGraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+        BOOST_CONCEPT_ASSERT(( VertexIndexGraphConcept<Graph> ));
         typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
 
         // get the vertices in question
@@ -181,7 +182,7 @@
     inline bool
     can_wrap_path(const Graph& g, const Path& p)
     {
-        function_requires< IncidenceGraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
         typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
         typedef typename graph_traits<Graph>::out_edge_iterator OutIterator;
 
@@ -209,7 +210,7 @@
                 Path& p,
                 ClosedMatrix& closed)
     {
-        function_requires< IncidenceGraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
         typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
         typedef typename graph_traits<Graph>::edge_descriptor Edge;
         typedef typename graph_traits<Graph>::out_edge_iterator OutIterator;
@@ -238,7 +239,7 @@
     inline bool
     exhaust_paths(const Graph& g, Path& p, ClosedMatrix& closed)
     {
-        function_requires< GraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( GraphConcept<Graph> ));
         typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
 
         // if there's more than one vertex in the path, this closes
@@ -272,10 +273,10 @@
                             std::size_t minlen,
                             std::size_t maxlen)
     {
-        function_requires< VertexListGraphConcept<Graph> >();
+        BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
         typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
         typedef std::vector<Vertex> Path;
-        function_requires< CycleVisitorConcept<Visitor,Path,Graph> >();
+        BOOST_CONCEPT_ASSERT(( CycleVisitorConcept<Visitor,Path,Graph> ));
         typedef std::vector<Vertex> VertexList;
         typedef std::vector<VertexList> ClosedMatrix;
 
@@ -320,7 +321,7 @@
                     std::size_t minlen,
                     std::size_t maxlen)
 {
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef typename graph_traits<Graph>::vertex_iterator VertexIterator;
 
     VertexIterator i, end;
Modified: branches/release/boost/graph/transitive_closure.hpp
==============================================================================
--- branches/release/boost/graph/transitive_closure.hpp	(original)
+++ branches/release/boost/graph/transitive_closure.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -19,6 +19,7 @@
 #include <boost/graph/topological_sort.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/named_function_params.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost
 {
@@ -76,12 +77,12 @@
     typedef typename graph_traits <
       Graph >::adjacency_iterator adjacency_iterator;
 
-    function_requires < VertexListGraphConcept < Graph > >();
-    function_requires < AdjacencyGraphConcept < Graph > >();
-    function_requires < VertexMutableGraphConcept < GraphTC > >();
-    function_requires < EdgeMutableGraphConcept < GraphTC > >();
-    function_requires < ReadablePropertyMapConcept < VertexIndexMap,
-      vertex > >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept < Graph > ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept < Graph > ));
+    BOOST_CONCEPT_ASSERT(( VertexMutableGraphConcept < GraphTC > ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept < GraphTC > ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept < VertexIndexMap,
+      vertex > ));
 
     typedef size_type cg_vertex;
     std::vector < cg_vertex > component_number_vec(num_vertices(g));
@@ -302,8 +303,8 @@
     typedef typename graph_traits < G >::vertex_descriptor vertex;
     typedef typename graph_traits < G >::vertex_iterator vertex_iterator;
 
-    function_requires < AdjacencyMatrixConcept < G > >();
-    function_requires < EdgeMutableGraphConcept < G > >();
+    BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept < G > ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept < G > ));
 
     // Matrix form:
     // for k
@@ -328,8 +329,8 @@
     typedef typename graph_traits < G >::vertex_descriptor vertex;
     typedef typename graph_traits < G >::vertex_iterator vertex_iterator;
 
-    function_requires < AdjacencyMatrixConcept < G > >();
-    function_requires < EdgeMutableGraphConcept < G > >();
+    BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept < G > ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept < G > ));
 
     // Make sure second loop will work
     if (num_vertices(g) == 0)
Modified: branches/release/boost/graph/undirected_dfs.hpp
==============================================================================
--- branches/release/boost/graph/undirected_dfs.hpp	(original)
+++ branches/release/boost/graph/undirected_dfs.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -13,6 +13,7 @@
 
 #include <boost/graph/depth_first_search.hpp>
 #include <vector>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
@@ -32,16 +33,16 @@
        VertexColorMap vertex_color,
        EdgeColorMap edge_color)
     {
-      function_requires<IncidenceGraphConcept<IncidenceGraph> >();
-      function_requires<DFSVisitorConcept<DFSVisitor, IncidenceGraph> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<IncidenceGraph> ));
+      BOOST_CONCEPT_ASSERT(( DFSVisitorConcept<DFSVisitor, IncidenceGraph> ));
       typedef typename graph_traits<IncidenceGraph>::vertex_descriptor Vertex;
       typedef typename graph_traits<IncidenceGraph>::edge_descriptor Edge;
-      function_requires<ReadWritePropertyMapConcept<VertexColorMap,Vertex> >();
-      function_requires<ReadWritePropertyMapConcept<EdgeColorMap,Edge> >();
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<VertexColorMap,Vertex> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<EdgeColorMap,Edge> ));
       typedef typename property_traits<VertexColorMap>::value_type ColorValue;
       typedef typename property_traits<EdgeColorMap>::value_type EColorValue;
-      function_requires< ColorValueConcept<ColorValue> >();
-      function_requires< ColorValueConcept<EColorValue> >();
+      BOOST_CONCEPT_ASSERT(( ColorValueConcept<ColorValue> ));
+      BOOST_CONCEPT_ASSERT(( ColorValueConcept<EColorValue> ));
       typedef color_traits<ColorValue> Color;
       typedef color_traits<EColorValue> EColor;
       typedef typename graph_traits<IncidenceGraph>::out_edge_iterator Iter;
@@ -94,16 +95,16 @@
        VertexColorMap vertex_color,
        EdgeColorMap edge_color)
     {
-      function_requires<IncidenceGraphConcept<IncidenceGraph> >();
-      function_requires<DFSVisitorConcept<DFSVisitor, IncidenceGraph> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<IncidenceGraph> ));
+      BOOST_CONCEPT_ASSERT(( DFSVisitorConcept<DFSVisitor, IncidenceGraph> ));
       typedef typename graph_traits<IncidenceGraph>::vertex_descriptor Vertex;
       typedef typename graph_traits<IncidenceGraph>::edge_descriptor Edge;
-      function_requires<ReadWritePropertyMapConcept<VertexColorMap,Vertex> >();
-      function_requires<ReadWritePropertyMapConcept<EdgeColorMap,Edge> >();
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<VertexColorMap,Vertex> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<EdgeColorMap,Edge> ));
       typedef typename property_traits<VertexColorMap>::value_type ColorValue;
       typedef typename property_traits<EdgeColorMap>::value_type EColorValue;
-      function_requires< ColorValueConcept<ColorValue> >();
-      function_requires< ColorValueConcept<EColorValue> >();
+      BOOST_CONCEPT_ASSERT(( ColorValueConcept<ColorValue> ));
+      BOOST_CONCEPT_ASSERT(( ColorValueConcept<EColorValue> ));
       typedef color_traits<ColorValue> Color;
       typedef color_traits<EColorValue> EColor;
       typename graph_traits<IncidenceGraph>::out_edge_iterator ei, ei_end;
@@ -134,8 +135,8 @@
                  VertexColorMap vertex_color, EdgeColorMap edge_color,
                  Vertex start_vertex)
   {
-    function_requires<DFSVisitorConcept<DFSVisitor, Graph> >();
-      function_requires<EdgeListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( DFSVisitorConcept<DFSVisitor, Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
 
     typedef typename property_traits<VertexColorMap>::value_type ColorValue;
     typedef color_traits<ColorValue> Color;
Modified: branches/release/libs/concept_check/reference.htm
==============================================================================
--- branches/release/libs/concept_check/reference.htm	(original)
+++ branches/release/libs/concept_check/reference.htm	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -366,6 +366,12 @@
 void function_requires();
 </pre>
 
+  <p><code>function_requires()</code> has been deprecated in favor of <code>BOOST_CONCEPT_ASSERT</code>.
+   This means that <del><code>function_requires< Concept<Type> >();</code></del>
+   becomes <code>BOOST_CONCEPT_ASSERT((Concept<Type>));</code>
+   (don't forget to <code>#include "boost/concept/assert.hpp"</code>).
+
+
   <h3><a name="deprecated-macros" id="deprecated-macros">Deprecated
   Macros</a></h3>
   <pre>
Modified: branches/release/libs/graph/doc/AStarHeuristic.html
==============================================================================
--- branches/release/libs/graph/doc/AStarHeuristic.html	(original)
+++ branches/release/libs/graph/doc/AStarHeuristic.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -116,7 +116,7 @@
   struct AStarHeuristicConcept {
     void constraints()
     {
-      function_requires< CopyConstructibleConcept<Heuristic> >();
+      BOOST_CONCEPT_ASSERT(( CopyConstructibleConcept<Heuristic> ));
       h(u);
     }
     Heuristic h;
Modified: branches/release/libs/graph/doc/AdjacencyGraph.html
==============================================================================
--- branches/release/libs/graph/doc/AdjacencyGraph.html	(original)
+++ branches/release/libs/graph/doc/AdjacencyGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -112,8 +112,8 @@
     typedef typename boost::graph_traits<G>::adjacency_iterator
       adjacency_iterator;
     void constraints() {
-      function_requires< IncidenceGraphConcept<G> >();
-      function_requires< MultiPassInputIteratorConcept<adjacency_iterator> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( MultiPassInputIteratorConcept<adjacency_iterator> ));
 
       p = adjacent_vertices(v, g);
       v = *p.first;
Modified: branches/release/libs/graph/doc/BidirectionalGraph.html
==============================================================================
--- branches/release/libs/graph/doc/BidirectionalGraph.html	(original)
+++ branches/release/libs/graph/doc/BidirectionalGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -145,8 +145,8 @@
     typedef typename boost::graph_traits<G>::in_edge_iterator
       in_edge_iterator;
     void constraints() {
-      function_requires< IncidenceGraphConcept<G> >();
-      function_requires< MultiPassInputIteratorConcept<in_edge_iterator> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( MultiPassInputIteratorConcept<in_edge_iterator> ));
 
       p = in_edges(v, g);
       e = *p.first;
Modified: branches/release/libs/graph/doc/EdgeListGraph.html
==============================================================================
--- branches/release/libs/graph/doc/EdgeListGraph.html	(original)
+++ branches/release/libs/graph/doc/EdgeListGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -146,8 +146,8 @@
     typedef typename boost::graph_traits<G>::edge_iterator 
       edge_iterator;
     void constraints() {
-      function_requires< GraphConcept<G> >();
-      function_requires< MultiPassInputIteratorConcept<edge_iterator> >();
+      BOOST_CONCEPT_ASSERT(( GraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( MultiPassInputIteratorConcept<edge_iterator> ));
 
       p = edges(g);
       E = num_edges(g);
Modified: branches/release/libs/graph/doc/Graph.html
==============================================================================
--- branches/release/libs/graph/doc/Graph.html	(original)
+++ branches/release/libs/graph/doc/Graph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -121,12 +121,12 @@
     typedef typename boost::graph_traits<G>::traversal_category traversal_category;
 
     void constraints() {
-      function_requires< DefaultConstructibleConcept<vertex_descriptor> >();
-      function_requires< EqualityComparableConcept<vertex_descriptor> >();
-      function_requires< AssignableConcept<vertex_descriptor> >();
-      function_requires< DefaultConstructibleConcept<edge_descriptor> >();
-      function_requires< EqualityComparableConcept<edge_descriptor> >();
-      function_requires< AssignableConcept<edge_descriptor> >();
+      BOOST_CONCEPT_ASSERT(( DefaultConstructibleConcept<vertex_descriptor> ));
+      BOOST_CONCEPT_ASSERT(( EqualityComparableConcept<vertex_descriptor> ));
+      BOOST_CONCEPT_ASSERT(( AssignableConcept<vertex_descriptor> ));
+      BOOST_CONCEPT_ASSERT(( DefaultConstructibleConcept<edge_descriptor> ));
+      BOOST_CONCEPT_ASSERT(( EqualityComparableConcept<edge_descriptor> ));
+      BOOST_CONCEPT_ASSERT(( AssignableConcept<edge_descriptor> ));
     }
     G g;
   };
Modified: branches/release/libs/graph/doc/IncidenceGraph.html
==============================================================================
--- branches/release/libs/graph/doc/IncidenceGraph.html	(original)
+++ branches/release/libs/graph/doc/IncidenceGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -162,8 +162,8 @@
   {
     typedef typename boost::graph_traits<G>::out_edge_iterator out_edge_iterator;
     void constraints() {
-      function_requires< GraphConcept<G> >();
-      function_requires< MultiPassInputIteratorConcept<out_edge_iterator> >();
+      BOOST_CONCEPT_ASSERT(( GraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( MultiPassInputIteratorConcept<out_edge_iterator> ));
 
       p = out_edges(u, g);
       e = *p.first;
Modified: branches/release/libs/graph/doc/KeyedUpdatableQueue.html
==============================================================================
--- branches/release/libs/graph/doc/KeyedUpdatableQueue.html	(original)
+++ branches/release/libs/graph/doc/KeyedUpdatableQueue.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -63,8 +63,8 @@
     typedef typename Q::key_map key_map;
     
     void constraints() {
-      function_requires< UpdatableQueue<Q> >();
-      function_requires< ReadWritePropertyMap< key_map, typename Buffer<Q>::value_type > >();
+      BOOST_CONCEPT_ASSERT(( UpdatableQueue<Q> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMap< key_map, typename Buffer<Q>::value_type > ));
     }
     
     void const_constraints(const Q& cq) {
Modified: branches/release/libs/graph/doc/MutableGraph.html
==============================================================================
--- branches/release/libs/graph/doc/MutableGraph.html	(original)
+++ branches/release/libs/graph/doc/MutableGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -250,7 +250,7 @@
   struct MutableIncidenceGraphConcept
   {
     void constraints() {
-      function_requires< MutableGraph<G> >();
+      BOOST_CONCEPT_ASSERT(( MutableGraph<G> ));
       remove_edge(iter, g);
       remove_out_edge_if(u, p, g);
     }
@@ -265,7 +265,7 @@
   struct MutableBidirectionalGraphConcept
   {
     void constraints() {
-      function_requires< MutableIncidenceGraph<G> >();
+      BOOST_CONCEPT_ASSERT(( MutableIncidenceGraph<G> ));
       remove_in_edge_if(u, p, g);
     }
     G g;
@@ -278,7 +278,7 @@
   struct MutableEdgeListGraphConcept
   {
     void constraints() {
-      function_requires< MutableGraph<G> >();
+      BOOST_CONCEPT_ASSERT(( MutableGraph<G> ));
       remove_edge_if(p, g);
     }
     G g;
Modified: branches/release/libs/graph/doc/MutablePropertyGraph.html
==============================================================================
--- branches/release/libs/graph/doc/MutablePropertyGraph.html	(original)
+++ branches/release/libs/graph/doc/MutablePropertyGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -125,7 +125,7 @@
   {
     typedef typename boost::graph_traits<G>::edge_descriptor edge_descriptor;
     void constraints() {
-      function_requires< MutableGraphConcept<G> >();
+      BOOST_CONCEPT_ASSERT(( MutableGraphConcept<G> ));
       v = add_vertex(vp, g);
       p = add_edge(u, v, ep, g);
     }
Modified: branches/release/libs/graph/doc/PropertyGraph.html
==============================================================================
--- branches/release/libs/graph/doc/PropertyGraph.html	(original)
+++ branches/release/libs/graph/doc/PropertyGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -173,9 +173,9 @@
     typedef typename property_map<G, PropertyTag>::type Map;
     typedef typename property_map<G, PropertyTag>::const_type const_Map;
     void constraints() {
-      function_requires< GraphConcept<G> >();
-      function_requires< ReadWritePropertyMapConcept<Map, X> >();
-      function_requires< ReadablePropertyMapConcept<const_Map, X> >();
+      BOOST_CONCEPT_ASSERT(( GraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<Map, X> ));
+      BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<const_Map, X> ));
 
       Map pmap = get(PropertyTag(), g);
       pval = get(PropertyTag(), g, x);
Modified: branches/release/libs/graph/doc/UpdatableQueue.html
==============================================================================
--- branches/release/libs/graph/doc/UpdatableQueue.html	(original)
+++ branches/release/libs/graph/doc/UpdatableQueue.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -58,7 +58,7 @@
   struct UpdatableQueueConcept
   {
     void constraints() {
-      function_requires< Buffer<Q> >();
+      BOOST_CONCEPT_ASSERT(( Buffer<Q> ));
       
       q.update(g_ct);
     }
Modified: branches/release/libs/graph/doc/VertexAndEdgeListGraph.html
==============================================================================
--- branches/release/libs/graph/doc/VertexAndEdgeListGraph.html	(original)
+++ branches/release/libs/graph/doc/VertexAndEdgeListGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -51,8 +51,8 @@
   struct VertexAndEdgeListGraphConcept
   {
     void constraints() {
-      function_requires< VertexListGraphConcept<G> >();
-      function_requires< EdgeListGraphConcept<G> >();
+      BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<G> ));
     }
   };
 </PRE>
Modified: branches/release/libs/graph/doc/VertexListGraph.html
==============================================================================
--- branches/release/libs/graph/doc/VertexListGraph.html	(original)
+++ branches/release/libs/graph/doc/VertexListGraph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -121,9 +121,9 @@
     typedef typename boost::graph_traits<G>::vertex_iterator 
       vertex_iterator;
     void constraints() {
-      function_requires< IncidenceGraphConcept<G> >();
-      function_requires< AdjacencyGraphConcept<G> >();
-      function_requires< MultiPassInputIteratorConcept<vertex_iterator> >();
+      BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<G> ));
+      BOOST_CONCEPT_ASSERT(( MultiPassInputIteratorConcept<vertex_iterator> ));
 
       p = vertices(g);
       V = num_vertices(g);
Modified: branches/release/libs/graph/doc/biconnected_components.w
==============================================================================
--- branches/release/libs/graph/doc/biconnected_components.w	(original)
+++ branches/release/libs/graph/doc/biconnected_components.w	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -156,11 +156,11 @@
 
 @d Concept checking of type parameters
 @{
-function_requires< VertexListGraphConcept<Graph> >();
-function_requires< IncidenceGraphConcept<Graph> >();
-function_requires< WritablePropertyMapConcept<ComponentMap, edge_t> >();
-function_requires< ReadWritePropertyMapConcept<DiscoverTimeMap, vertex_t> >();
-function_requires< ReadWritePropertyMapConcept<LowPointMap, vertex_t> >();
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+BOOST_CONCEPT_ASSERT(( WritablePropertyMapConcept<ComponentMap, edge_t> ));
+BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<DiscoverTimeMap, vertex_t> ));
+BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<LowPointMap, vertex_t> ));
 @}
 
 The first step of the algorithm is to initialize the discover times of
@@ -286,6 +286,7 @@
 #include <boost/graph/graph_traits.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/property_map/property_map.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
   @<Biconnected Components Algorithm@>
Modified: branches/release/libs/graph/doc/constructing_algorithms.html
==============================================================================
--- branches/release/libs/graph/doc/constructing_algorithms.html	(original)
+++ branches/release/libs/graph/doc/constructing_algorithms.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -79,7 +79,7 @@
 href="./VertexListGraph.html">VertexListGraph</a>. This is enforced by
 the use of those graph operations in the algorithm, and furthermore by
 our explicit requirement added as a concept check with
-<TT>function_requires()</TT> (see Section <A
+<TT>BOOST_CONCEPT_ASSERT()</TT> (see Section <A
 HREF="../../concept_check/concept_check.htm">Concept
 Checking</A> for more details about concept checking).
 
@@ -122,10 +122,10 @@
     typedef typename property_traits<Color>::value_type ColorType;
     typedef typename property_traits<Order>::value_type OrderType;
 
-    function_requires< VertexListGraphConcept<VertexListGraph> >();
-    function_requires< ReadWritePropertyMapConcept<Color, vertex_descriptor> >();
-    function_requires< IntegerConcept<ColorType> >();
-    function_requires< ReadablePropertyMapConcept<Order, size_type> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<VertexListGraph> ));
+    BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<Color, vertex_descriptor> ));
+    BOOST_CONCEPT_ASSERT(( IntegerConcept<ColorType> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<Order, size_type> ));
     BOOST_STATIC_ASSERT((is_same<OrderType, vertex_descriptor>::value));
     
     size_type max_color = 0;
Modified: branches/release/libs/graph/doc/isomorphism-impl-v2.w
==============================================================================
--- branches/release/libs/graph/doc/isomorphism-impl-v2.w	(original)
+++ branches/release/libs/graph/doc/isomorphism-impl-v2.w	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -388,31 +388,31 @@
 @d Concept checking
 @{
 // Graph requirements
-function_requires< VertexListGraphConcept<Graph1> >();
-function_requires< EdgeListGraphConcept<Graph1> >();
-function_requires< VertexListGraphConcept<Graph2> >();
-function_requires< BidirectionalGraphConcept<Graph2> >();
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph1> ));
+BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph1> ));
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph2> ));
+BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph2> ));
 
 typedef typename graph_traits<Graph1>::vertex_descriptor vertex1_t;
 typedef typename graph_traits<Graph2>::vertex_descriptor vertex2_t;
 typedef typename graph_traits<Graph1>::vertices_size_type size_type;
 
 // Vertex invariant requirement
-function_requires< AdaptableUnaryFunctionConcept<Invariant1,
-  size_type, vertex1_t> >();
-function_requires< AdaptableUnaryFunctionConcept<Invariant2,
-  size_type, vertex2_t> >();
+BOOST_CONCEPT_ASSERT(( AdaptableUnaryFunctionConcept<Invariant1,
+  size_type, vertex1_t> ));
+BOOST_CONCEPT_ASSERT(( AdaptableUnaryFunctionConcept<Invariant2,
+  size_type, vertex2_t> ));
 
 // Property map requirements
-function_requires< ReadWritePropertyMapConcept<IsoMapping, vertex1_t> >();
+BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<IsoMapping, vertex1_t> ));
 typedef typename property_traits<IsoMapping>::value_type IsoMappingValue;
 BOOST_STATIC_ASSERT((is_same<IsoMappingValue, vertex2_t>::value));
 
-function_requires< ReadablePropertyMapConcept<IndexMap1, vertex1_t> >();
+BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap1, vertex1_t> ));
 typedef typename property_traits<IndexMap1>::value_type IndexMap1Value;
 BOOST_STATIC_ASSERT((is_convertible<IndexMap1Value, size_type>::value));
 
-function_requires< ReadablePropertyMapConcept<IndexMap2, vertex2_t> >();
+BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap2, vertex2_t> ));
 typedef typename property_traits<IndexMap2>::value_type IndexMap2Value;
 BOOST_STATIC_ASSERT((is_convertible<IndexMap2Value, size_type>::value));
 @}
Modified: branches/release/libs/graph/doc/isomorphism-impl-v3.w
==============================================================================
--- branches/release/libs/graph/doc/isomorphism-impl-v3.w	(original)
+++ branches/release/libs/graph/doc/isomorphism-impl-v3.w	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -507,31 +507,31 @@
 @d Concept checking
 @{
 // Graph requirements
-function_requires< VertexListGraphConcept<Graph1> >();
-function_requires< EdgeListGraphConcept<Graph1> >();
-function_requires< VertexListGraphConcept<Graph2> >();
-function_requires< BidirectionalGraphConcept<Graph2> >();
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph1> ));
+BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph1> ));
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph2> ));
+BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph2> ));
 
 typedef typename graph_traits<Graph1>::vertex_descriptor vertex1_t;
 typedef typename graph_traits<Graph2>::vertex_descriptor vertex2_t;
 typedef typename graph_traits<Graph1>::vertices_size_type size_type;
 
 // Vertex invariant requirement
-function_requires< AdaptableUnaryFunctionConcept<Invariant1,
-  size_type, vertex1_t> >();
-function_requires< AdaptableUnaryFunctionConcept<Invariant2,
-  size_type, vertex2_t> >();
+BOOST_CONCEPT_ASSERT(( AdaptableUnaryFunctionConcept<Invariant1,
+  size_type, vertex1_t> ));
+BOOST_CONCEPT_ASSERT(( AdaptableUnaryFunctionConcept<Invariant2,
+  size_type, vertex2_t> ));
 
 // Property map requirements
-function_requires< ReadWritePropertyMapConcept<IsoMapping, vertex1_t> >();
+BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<IsoMapping, vertex1_t> ));
 typedef typename property_traits<IsoMapping>::value_type IsoMappingValue;
 BOOST_STATIC_ASSERT((is_same<IsoMappingValue, vertex2_t>::value));
 
-function_requires< ReadablePropertyMapConcept<IndexMap1, vertex1_t> >();
+BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap1, vertex1_t> ));
 typedef typename property_traits<IndexMap1>::value_type IndexMap1Value;
 BOOST_STATIC_ASSERT((is_convertible<IndexMap1Value, size_type>::value));
 
-function_requires< ReadablePropertyMapConcept<IndexMap2, vertex2_t> >();
+BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap2, vertex2_t> ));
 typedef typename property_traits<IndexMap2>::value_type IndexMap2Value;
 BOOST_STATIC_ASSERT((is_convertible<IndexMap2Value, size_type>::value));
 @}
Modified: branches/release/libs/graph/doc/isomorphism-impl.w
==============================================================================
--- branches/release/libs/graph/doc/isomorphism-impl.w	(original)
+++ branches/release/libs/graph/doc/isomorphism-impl.w	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -301,21 +301,21 @@
 @d Concept checking
 @{
 // Graph requirements
-function_requires< VertexListGraphConcept<Graph1> >();
-function_requires< EdgeListGraphConcept<Graph1> >();
-function_requires< VertexListGraphConcept<Graph2> >();
-function_requires< BidirectionalGraphConcept<Graph2> >();
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph1> ));
+BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph1> ));
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph2> ));
+BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph2> ));
 
 // Property map requirements
-function_requires< ReadWritePropertyMapConcept<IndexMapping, vertex1_t> >();
+BOOST_CONCEPT_ASSERT(( ReadWritePropertyMapConcept<IndexMapping, vertex1_t> ));
 typedef typename property_traits<IndexMapping>::value_type IndexMappingValue;
 BOOST_STATIC_ASSERT((is_same<IndexMappingValue, vertex2_t>::value));
 
-function_requires< ReadablePropertyMapConcept<IndexMap1, vertex1_t> >();
+BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap1, vertex1_t> ));
 typedef typename property_traits<IndexMap1>::value_type IndexMap1Value;
 BOOST_STATIC_ASSERT((is_convertible<IndexMap1Value, size_type>::value));
 
-function_requires< ReadablePropertyMapConcept<IndexMap2, vertex2_t> >();
+BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<IndexMap2, vertex2_t> ));
 typedef typename property_traits<IndexMap2>::value_type IndexMap2Value;
 BOOST_STATIC_ASSERT((is_convertible<IndexMap2Value, size_type>::value));
 @}
Modified: branches/release/libs/graph/doc/leda_conversion.html
==============================================================================
--- branches/release/libs/graph/doc/leda_conversion.html	(original)
+++ branches/release/libs/graph/doc/leda_conversion.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -236,9 +236,9 @@
   main(int,char*[])
   {
     typedef GRAPH<int,int> Graph;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< BidirectionalGraphConcept<Graph> >();
-    function_requires< MutableGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableGraphConcept<Graph> ));
     return 0;
   }
 </PRE>
Modified: branches/release/libs/graph/doc/reverse_graph.html
==============================================================================
--- branches/release/libs/graph/doc/reverse_graph.html	(original)
+++ branches/release/libs/graph/doc/reverse_graph.html	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -27,7 +27,7 @@
 a BidirectionalGraph,
 effectively transposing the graph. The construction of the
 <tt>reverse_graph</tt> is constant time, providing a highly efficient
-way to obtain a transposed-view of a graph.
+way to obtain a transposed view of a graph.
 
 
 <H3>Example</H3>
@@ -215,6 +215,16 @@
 <hr>
 
 
+<tt>property_map<reverse_graph, edge_underlying_t>::type</tt><br>
+and<br>
+<tt>property_map<reverse_graph, edge_underlying_t>::const_type</tt>
+<br><br>
+An edge property type mapping from edge descriptors in the <tt>reverse_graph</tt> to
+edge descriptors in the underlying <tt>BidirectionalGraph</tt> object.
+
+<hr>
+
+
 <H2>Member Functions</H2>
 
 <hr>
@@ -359,6 +369,16 @@
 <hr>
 
 <pre>
+property_map<reverse_graph, edge_underlying_t>::const_type
+get(PropertyTag, const reverse_graph& g)
+</pre>
+Returns a property map object that converts from edge descriptors in the
+<tt>reverse_graph</tt> to edge descriptors in the underlying
+<tt>BidirectionalGraph</tt> object.
+
+<hr>
+
+<pre>
 template <class PropertyTag, class X>
 typename property_traits<property_map<reverse_graph, PropertyTag>::const_type>::value_type
 get(PropertyTag, const reverse_graph& g, X x)
@@ -368,6 +388,13 @@
 <hr>
 
 <pre>
+typename graph_traits<BidirectionalGraph>::edge_descriptor
+get(edge_underlying_t, const reverse_graph& g, edge_descriptor e)
+</pre>
+This returns the underlying edge descriptor for the edge <tt>e</tt> in the <tt>reverse_graph</tt>.
+<hr>
+
+<pre>
 template <class PropertyTag, class X, class Value>
 void
 put(PropertyTag, const reverse_graph& g, X x, const Value& value)
Modified: branches/release/libs/graph/doc/transitive_closure.w
==============================================================================
--- branches/release/libs/graph/doc/transitive_closure.w	(original)
+++ branches/release/libs/graph/doc/transitive_closure.w	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -160,11 +160,11 @@
 
 @d Concept checking
 @{
-function_requires< VertexListGraphConcept<Graph> >();
-function_requires< AdjacencyGraphConcept<Graph> >();
-function_requires< VertexMutableGraphConcept<GraphTC> >();
-function_requires< EdgeMutableGraphConcept<GraphTC> >();
-function_requires< ReadablePropertyMapConcept<VertexIndexMap, vertex> >();
+BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+BOOST_CONCEPT_ASSERT(( VertexMutableGraphConcept<GraphTC> ));
+BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept<GraphTC> ));
+BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<VertexIndexMap, vertex> ));
 @}
 
 \noindent To simplify the code in the rest of the function we make the
@@ -566,8 +566,8 @@
   typedef typename graph_traits<G>::vertex_descriptor vertex;
   typedef typename graph_traits<G>::vertex_iterator vertex_iterator;
 
-  function_requires< AdjacencyMatrixConcept<G> >();
-  function_requires< EdgeMutableGraphConcept<G> >();
+  BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<G> ));
+  BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept<G> ));
 
   // Matrix form:
   // for k
@@ -597,8 +597,8 @@
   typedef typename graph_traits<G>::vertex_descriptor vertex;
   typedef typename graph_traits<G>::vertex_iterator vertex_iterator;
 
-  function_requires< AdjacencyMatrixConcept<G> >();
-  function_requires< EdgeMutableGraphConcept<G> >();
+  BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<G> ));
+  BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept<G> ));
 
   // Make sure second loop will work  
   if (num_vertices(g) == 0)
@@ -671,6 +671,7 @@
 #include <boost/graph/topological_sort.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/named_function_params.hpp>
+#include <boost/concept/assert.hpp>
 
 namespace boost {
 
Modified: branches/release/libs/graph/example/implicit_graph.cpp
==============================================================================
--- branches/release/libs/graph/example/implicit_graph.cpp	(original)
+++ branches/release/libs/graph/example/implicit_graph.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -4,7 +4,7 @@
 //    (See accompanying file LICENSE_1_0.txt or copy at
 //          http://www.boost.org/LICENSE_1_0.txt)
 
-
+#include <boost/concept/assert.hpp>
 #include <boost/graph/adjacency_iterator.hpp>
 #include <boost/graph/dijkstra_shortest_paths.hpp>
 #include <boost/graph/graph_concepts.hpp>
@@ -444,15 +444,15 @@
   // Check the concepts that graph models.  This is included to demonstrate
   // how concept checking works, but is not required for a working program
   // since Boost algorithms do their own concept checking.
-  function_requires< BidirectionalGraphConcept<ring_graph> >();
-  function_requires< AdjacencyGraphConcept<ring_graph> >();
-  function_requires< VertexListGraphConcept<ring_graph> >();
-  function_requires< EdgeListGraphConcept<ring_graph> >();
-  function_requires< AdjacencyMatrixConcept<ring_graph> >();
-  function_requires<
-    ReadablePropertyMapConcept<const_edge_weight_map, edge_descriptor> >();
-  function_requires<
-    ReadablePropertyGraphConcept<ring_graph, edge_descriptor, edge_weight_t> >();
+  BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<ring_graph> ));
+  BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<ring_graph> ));
+  BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<ring_graph> ));
+  BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<ring_graph> ));
+  BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<ring_graph> ));
+  BOOST_CONCEPT_ASSERT((
+    ReadablePropertyMapConcept<const_edge_weight_map, edge_descriptor> ));
+  BOOST_CONCEPT_ASSERT((
+    ReadablePropertyGraphConcept<ring_graph, edge_descriptor, edge_weight_t> ));
 
   // Specify the size of the graph on the command line, or use a default size
   // of 5.
Modified: branches/release/libs/graph/example/leda-concept-check.cpp
==============================================================================
--- branches/release/libs/graph/example/leda-concept-check.cpp	(original)
+++ branches/release/libs/graph/example/leda-concept-check.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -7,15 +7,16 @@
 //=======================================================================
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/leda_graph.hpp>
+#include <boost/concept/assert.hpp>
 
 int
 main()
 {
   using namespace boost;
-  typedef leda::GRAPH < int, int >Graph;
-  function_requires < VertexListGraphConcept < Graph > >();
-  function_requires < BidirectionalGraphConcept < Graph > >();
-  function_requires < VertexMutableGraphConcept < Graph > >();
-  function_requires < EdgeMutableGraphConcept < Graph > >();
+  typedef leda::GRAPH<int, int> Graph;
+  BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+  BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept< Graph> ));
+  BOOST_CONCEPT_ASSERT(( VertexMutableGraphConcept< Graph> ));
+  BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept<Graph> ));
   return EXIT_SUCCESS;
 }
Modified: branches/release/libs/graph/example/loops_dfs.cpp
==============================================================================
--- branches/release/libs/graph/example/loops_dfs.cpp	(original)
+++ branches/release/libs/graph/example/loops_dfs.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -6,6 +6,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 //=======================================================================
 #include <boost/config.hpp>
+#include <boost/concept/assert.hpp>
 #include <iostream>
 #include <fstream>
 #include <stack>
@@ -47,7 +48,7 @@
            const Graph & g, 
            Loops & loops)    // A container of sets of vertices
 {
-  function_requires < BidirectionalGraphConcept < Graph > >();
+  BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
   typedef typename graph_traits < Graph >::edge_descriptor Edge;
   typedef typename graph_traits < Graph >::vertex_descriptor Vertex;
   std::vector < Edge > back_edges;
@@ -69,7 +70,7 @@
                     Graph >::edge_descriptor back_edge, const Graph & g,
                     Set & loop_set)
 {
-  function_requires < BidirectionalGraphConcept < Graph > >();
+  BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
   typedef typename graph_traits < Graph >::vertex_descriptor Vertex;
   typedef color_traits < default_color_type > Color;
 
Modified: branches/release/libs/graph/example/put-get-helper-eg.cpp
==============================================================================
--- branches/release/libs/graph/example/put-get-helper-eg.cpp	(original)
+++ branches/release/libs/graph/example/put-get-helper-eg.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -8,6 +8,7 @@
 #include <vector>
 #include <string>
 #include <boost/property_map/property_map.hpp>
+#include <boost/concept/assert.hpp>
 
 #ifdef BOOST_NO_STD_ITERATOR_TRAITS
 #error This examples requires a compiler that provides a working std::iterator_traits
@@ -53,6 +54,6 @@
   typedef foo::iterator_property_map < vec_t::iterator,
     boost::identity_property_map > pmap_t;
   using namespace boost;
-  function_requires < Mutable_LvaluePropertyMapConcept < pmap_t, int > >();
+  BOOST_CONCEPT_ASSERT(( Mutable_LvaluePropertyMapConcept<pmap_t, int> ));
   return 0;
 }
Modified: branches/release/libs/graph/test/adj_list_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/adj_list_cc.cpp	(original)
+++ branches/release/libs/graph/test/adj_list_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -9,6 +9,7 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/graph_archetypes.hpp>
 #include <boost/graph/adjacency_list.hpp>
+#include <boost/concept/assert.hpp>
 
 int main(int,char*[])
 {
@@ -21,20 +22,20 @@
     > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableIncidenceGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   {
     typedef adjacency_list<vecS, vecS, bidirectionalS, 
@@ -43,21 +44,21 @@
     > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< BidirectionalGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   {
     typedef adjacency_list< listS, listS, directedS, 
@@ -66,20 +67,20 @@
     > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableIncidenceGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires< 
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   {
     typedef adjacency_list< listS, listS, undirectedS, 
@@ -88,20 +89,20 @@
     > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   // Checking adjacency_list with EdgeList=setS
   {
@@ -111,21 +112,21 @@
     > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< BidirectionalGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   {
     typedef adjacency_list< setS, listS, directedS, 
@@ -134,20 +135,20 @@
     > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableIncidenceGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   {
     typedef adjacency_list< setS, listS, undirectedS, 
@@ -156,105 +157,105 @@
     > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( 
+      LvaluePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   // Check adjacency_list without any properties
   {
     typedef adjacency_list<vecS, vecS, directedS > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableIncidenceGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
   }
   {
     typedef adjacency_list<vecS, vecS, bidirectionalS> Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< BidirectionalGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
   }
   {
     typedef adjacency_list< listS, listS, directedS> Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableIncidenceGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
   }
   {
     typedef adjacency_list< listS, listS, undirectedS> Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
   }
   // Checking EdgeList=setS with no properties
   {
     typedef adjacency_list<setS, vecS, bidirectionalS> Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< BidirectionalGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
-    function_requires< ReadablePropertyGraphConcept<Graph, 
-      Vertex, vertex_index_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, 
+      Vertex, vertex_index_t> ));
   }
   {
     typedef adjacency_list< setS, listS, directedS> Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< MutableIncidenceGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
   }
   {
     typedef adjacency_list< setS, listS, undirectedS> Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableBidirectionalGraphConcept<Graph> >();
-    function_requires< MutableEdgeListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept<Graph> ));
   }
   return 0;
 }
Modified: branches/release/libs/graph/test/adj_matrix_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/adj_matrix_cc.cpp	(original)
+++ branches/release/libs/graph/test/adj_matrix_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -9,6 +9,7 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/graph_archetypes.hpp>
 #include <boost/graph/adjacency_matrix.hpp>
+#include <boost/concept/assert.hpp>
 
 int main(int,char*[])
 {
@@ -16,21 +17,21 @@
   // Check adjacency_matrix without properties
   {
     typedef adjacency_matrix<directedS> Graph;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableGraphConcept<Graph> >();
-    function_requires< AdjacencyMatrixConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<Graph> ));
   }
   {
     typedef adjacency_matrix<undirectedS> Graph;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< MutableGraphConcept<Graph> >();
-    function_requires< AdjacencyMatrixConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( MutableGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<Graph> ));
   }
   // Check adjacency_matrix with properties
   {
@@ -39,17 +40,17 @@
       property<edge_weight_t, float> > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< AdjacencyMatrixConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires< ReadablePropertyGraphConcept<Graph, 
-      Vertex, vertex_index_t> >();
-    function_requires< PropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires< PropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, 
+      Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   {
     typedef adjacency_matrix<undirectedS, 
@@ -57,17 +58,17 @@
       property<edge_weight_t, float> > Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< EdgeListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< AdjacencyMatrixConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires< ReadablePropertyGraphConcept<Graph, 
-      Vertex, vertex_index_t> >();
-    function_requires< PropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires< PropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyMatrixConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, 
+      Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Edge, edge_weight_t> ));
   }
   return 0;
 }
Modified: branches/release/libs/graph/test/edge_list_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/edge_list_cc.cpp	(original)
+++ branches/release/libs/graph/test/edge_list_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -9,6 +9,7 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/graph_archetypes.hpp>
 #include <boost/graph/edge_list.hpp>
+#include <boost/concept/assert.hpp>
 #include <cstddef>
 #include <iterator>
 
@@ -24,10 +25,10 @@
     
         typedef graph_traits<EdgeList>::edge_descriptor Edge;
     
-        function_requires< EdgeListGraphConcept<EdgeList> >();
+        BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<EdgeList> ));
     
-        function_requires< ReadablePropertyGraphConcept<EdgeList, Edge, 
-            edge_index_t> >();
+        BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<EdgeList, Edge, 
+            edge_index_t> ));
     }
     return 0;
 }
Modified: branches/release/libs/graph/test/filtered_graph_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/filtered_graph_cc.cpp	(original)
+++ branches/release/libs/graph/test/filtered_graph_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -10,6 +10,7 @@
 #include <boost/graph/graph_archetypes.hpp>
 #include <boost/graph/adjacency_list.hpp>
 #include <boost/graph/filtered_graph.hpp>
+#include <boost/concept/assert.hpp>
 
 int main(int,char*[])
 {
@@ -22,12 +23,12 @@
     typedef filtered_graph<Graph, is_residual_edge<ResCapMap> > ResGraph;
     typedef graph_traits<ResGraph>::edge_descriptor Edge;
 
-    function_requires< VertexListGraphConcept<ResGraph> >();
-    function_requires< EdgeListGraphConcept<ResGraph> >();
-    function_requires< IncidenceGraphConcept<ResGraph> >();
-    function_requires< AdjacencyGraphConcept<ResGraph> >();
-    function_requires< PropertyGraphConcept<ResGraph, Edge, 
-      edge_residual_capacity_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<ResGraph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept<ResGraph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<ResGraph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<ResGraph> ));
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<ResGraph, Edge, 
+      edge_residual_capacity_t> ));
   }
   // Check filtered_graph with bidirectional adjacency_list
   {
@@ -35,7 +36,7 @@
       no_property, property<edge_residual_capacity_t, long> > Graph;
     typedef property_map<Graph, edge_residual_capacity_t>::type ResCapMap;
     typedef filtered_graph<Graph, is_residual_edge<ResCapMap> > ResGraph;
-    function_requires< BidirectionalGraphConcept<ResGraph> >();
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<ResGraph> ));
   }
   return 0;
 }
Modified: branches/release/libs/graph/test/graph_concepts.cpp
==============================================================================
--- branches/release/libs/graph/test/graph_concepts.cpp	(original)
+++ branches/release/libs/graph/test/graph_concepts.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -8,6 +8,7 @@
 //=======================================================================
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/graph_archetypes.hpp>
+#include <boost/concept/assert.hpp>
 
 int main(int,char*[])
 {
@@ -19,22 +20,22 @@
 
   typedef incidence_graph_archetype<Vertex, directed_tag, 
     allow_parallel_edge_tag> Graph1;
-  function_requires< IncidenceGraphConcept<Graph1> >();
+  BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph1> ));
 
   typedef adjacency_graph_archetype<Vertex, directed_tag, 
     allow_parallel_edge_tag> Graph2;
-  function_requires< AdjacencyGraphConcept<Graph2> >();
+  BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph2> ));
 
   typedef vertex_list_graph_archetype<Vertex, directed_tag, 
     allow_parallel_edge_tag> Graph3;
-  function_requires< VertexListGraphConcept<Graph3> >();
+  BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph3> ));
 
-  function_requires< ColorValueConcept<color_value_archetype> >();
+  BOOST_CONCEPT_ASSERT(( ColorValueConcept<color_value_archetype> ));
 
   typedef incidence_graph_archetype<Vertex, directed_tag, allow_parallel_edge_tag> G;
   typedef property_graph_archetype<G, vertex_color_t, color_value_archetype>
     Graph4;
-  function_requires< PropertyGraphConcept<Graph4, Vertex, vertex_color_t> >();
+  BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph4, Vertex, vertex_color_t> ));
 
   return 0;
 }
Modified: branches/release/libs/graph/test/grid_graph_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/grid_graph_cc.cpp	(original)
+++ branches/release/libs/graph/test/grid_graph_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -10,6 +10,7 @@
 #include <boost/graph/graph_archetypes.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/grid_graph.hpp>
+#include <boost/concept/assert.hpp>
 
 #define DIMENSIONS 3
 using namespace boost;
@@ -20,14 +21,14 @@
   typedef graph_traits<Graph>::vertex_descriptor Vertex;
   typedef graph_traits<Graph>::edge_descriptor Edge;
 
-  function_requires<BidirectionalGraphConcept<Graph> >();
-  function_requires<VertexListGraphConcept<Graph> >();
-  function_requires<EdgeListGraphConcept<Graph> >();
-  function_requires<IncidenceGraphConcept<Graph> >();
-  function_requires<AdjacencyGraphConcept<Graph> >();
-  function_requires<AdjacencyMatrixConcept<Graph> >();
-  function_requires<ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-  function_requires<ReadablePropertyGraphConcept<Graph, Edge, edge_index_t> >();
+  BOOST_CONCEPT_ASSERT((BidirectionalGraphConcept<Graph> ));
+  BOOST_CONCEPT_ASSERT((VertexListGraphConcept<Graph> ));
+  BOOST_CONCEPT_ASSERT((EdgeListGraphConcept<Graph> ));
+  BOOST_CONCEPT_ASSERT((IncidenceGraphConcept<Graph> ));
+  BOOST_CONCEPT_ASSERT((AdjacencyGraphConcept<Graph> ));
+  BOOST_CONCEPT_ASSERT((AdjacencyMatrixConcept<Graph> ));
+  BOOST_CONCEPT_ASSERT((ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+  BOOST_CONCEPT_ASSERT((ReadablePropertyGraphConcept<Graph, Edge, edge_index_t> ));
 
   return (0);
 }
Modified: branches/release/libs/graph/test/leda_graph_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/leda_graph_cc.cpp	(original)
+++ branches/release/libs/graph/test/leda_graph_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -8,7 +8,7 @@
 //=======================================================================
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/leda_graph.hpp>
-
+#include <boost/concept/assert.hpp>
 
 int
 main(int,char*[])
@@ -18,21 +18,21 @@
     typedef leda::GRAPH<int,int> Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< BidirectionalGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< VertexMutableGraphConcept<Graph> >();
-    function_requires< EdgeMutableGraphConcept<Graph> >();
-    function_requires< VertexMutablePropertyGraphConcept<Graph> >();
-    function_requires< EdgeMutablePropertyGraphConcept<Graph> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> >();
-    function_requires<
-      ReadablePropertyGraphConcept<Graph, Edge, edge_index_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, vertex_all_t> >();
-    function_requires<
-      LvaluePropertyGraphConcept<Graph, Vertex, edge_all_t> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutableGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutableGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT((
+      ReadablePropertyGraphConcept<Graph, Vertex, vertex_index_t> ));
+    BOOST_CONCEPT_ASSERT((
+      ReadablePropertyGraphConcept<Graph, Edge, edge_index_t> ));
+    BOOST_CONCEPT_ASSERT((
+      LvaluePropertyGraphConcept<Graph, Vertex, vertex_all_t> ));
+    BOOST_CONCEPT_ASSERT((
+      LvaluePropertyGraphConcept<Graph, Vertex, edge_all_t> ));
   }
   return 0;
 }
Modified: branches/release/libs/graph/test/read_propmap.cpp
==============================================================================
--- branches/release/libs/graph/test/read_propmap.cpp	(original)
+++ branches/release/libs/graph/test/read_propmap.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -6,6 +6,7 @@
 
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/adjacency_list.hpp>
+#include <boost/concept/assert.hpp>
 
 // Test contributed by Dmitry that validates a read-only property map bug
 // for bundled properties.
@@ -24,7 +25,7 @@
     typedef property_map<graph_t, double EdgeProp::*>::type WeightMap;
     typedef property_map<graph_t, double EdgeProp::*>::const_type cWeightMap;
     typedef graph_traits<graph_t>::edge_descriptor Edge;
-    function_requires<ReadablePropertyMapConcept<WeightMap, Edge> >();
-    function_requires<ReadablePropertyMapConcept<cWeightMap, Edge> >();
+    BOOST_CONCEPT_ASSERT((ReadablePropertyMapConcept<WeightMap, Edge> ));
+    BOOST_CONCEPT_ASSERT((ReadablePropertyMapConcept<cWeightMap, Edge> ));
     return 0;
 }
Modified: branches/release/libs/graph/test/reverse_graph_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/reverse_graph_cc.cpp	(original)
+++ branches/release/libs/graph/test/reverse_graph_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -10,6 +10,7 @@
 #include <boost/graph/graph_archetypes.hpp>
 #include <boost/graph/adjacency_list.hpp>
 #include <boost/graph/reverse_graph.hpp>
+#include <boost/concept/assert.hpp>
 #include <string>
 
 int main(int,char*[])
@@ -23,11 +24,13 @@
       property<graph_name_t, std::string>
     > AdjList;
     typedef reverse_graph<AdjList> Graph;
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< ReadablePropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires< ReadablePropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Edge, edge_underlying_t> ));
+    function_requires< ReadablePropertyGraphConcept<Graph, Edge, edge_underlying_t> >();
     AdjList g;
     Graph gr(g);
     get_property(gr, graph_name_t());
@@ -40,11 +43,13 @@
       property<graph_name_t, std::string>
     > AdjList;
     typedef reverse_graph<AdjList,AdjList&> Graph;
-    function_requires< VertexListGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< PropertyGraphConcept<Graph, Vertex, vertex_color_t> >();
-    function_requires< PropertyGraphConcept<Graph, Edge, edge_weight_t> >();
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Edge, edge_weight_t> ));
+    BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Edge, edge_underlying_t> ));
+    function_requires< ReadablePropertyGraphConcept<Graph, Edge, edge_underlying_t> >();
     AdjList g;
     Graph gr(g);
     get_property(gr, graph_name_t());
Modified: branches/release/libs/graph/test/stanford_graph_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/stanford_graph_cc.cpp	(original)
+++ branches/release/libs/graph/test/stanford_graph_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -9,6 +9,7 @@
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/graph_archetypes.hpp>
 #include <boost/graph/stanford_graph.hpp>
+#include <boost/concept/assert.hpp>
 
 int main(int,char*[])
 {
@@ -18,28 +19,28 @@
     typedef Graph* Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< PropertyGraphConcept<Graph, Edge, edge_length_t > >();
-    function_requires< 
-      PropertyGraphConcept<Graph, Vertex, u_property<Vertex> > >();
-    function_requires< 
-      PropertyGraphConcept<Graph, Edge, a_property<Vertex> > >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Edge, edge_length_t > ));
+    BOOST_CONCEPT_ASSERT(( 
+      PropertyGraphConcept<Graph, Vertex, u_property<Vertex> > ));
+    BOOST_CONCEPT_ASSERT(( 
+      PropertyGraphConcept<Graph, Edge, a_property<Vertex> > ));
   }
   {
     typedef const Graph* Graph;
     typedef graph_traits<Graph>::vertex_descriptor Vertex;
     typedef graph_traits<Graph>::edge_descriptor Edge;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
-    function_requires< 
-      ReadablePropertyGraphConcept<Graph, Edge, edge_length_t > >();
-    function_requires< 
-      ReadablePropertyGraphConcept<Graph, Vertex, u_property<Vertex> > >();
-    function_requires< 
-      ReadablePropertyGraphConcept<Graph, Edge, a_property<Vertex> > >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Edge, edge_length_t > ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Vertex, u_property<Vertex> > ));
+    BOOST_CONCEPT_ASSERT(( 
+      ReadablePropertyGraphConcept<Graph, Edge, a_property<Vertex> > ));
   }
   return 0;
 }
Modified: branches/release/libs/graph/test/test_construction.hpp
==============================================================================
--- branches/release/libs/graph/test/test_construction.hpp	(original)
+++ branches/release/libs/graph/test/test_construction.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -7,6 +7,7 @@
 #ifndef TEST_CONSTRUCTION_HPP
 #define TEST_CONSTRUCTION_HPP
 
+#include <boost/concept/assert.hpp>
 #include <utility>
 
 /** @name Build Graph
Modified: branches/release/libs/graph/test/test_destruction.hpp
==============================================================================
--- branches/release/libs/graph/test/test_destruction.hpp	(original)
+++ branches/release/libs/graph/test/test_destruction.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -7,6 +7,7 @@
 #ifndef TEST_DESTRUCTION_HPP
 #define TEST_DESTRUCTION_HPP
 
+#include <boost/concept/assert.hpp>
 #include <utility>
 
 /** @name Destroy Graph
@@ -36,7 +37,7 @@
 void destroy_graph(Graph& g, VertexSet const&, boost::mpl::false_, boost::mpl::true_) {
     using namespace boost;
     BOOST_CONCEPT_ASSERT((VertexListGraphConcept<Graph>));
-    // function_requires< VeretexMutableGraphConcept<Graph> >();
+    // BOOST_CONCEPT_ASSERT(( VeretexMutableGraphConcept<Graph> ));
 
     std::cout << "...destroy_labeled\n";
     // Remove the roof vertex
Modified: branches/release/libs/graph/test/test_direction.hpp
==============================================================================
--- branches/release/libs/graph/test/test_direction.hpp	(original)
+++ branches/release/libs/graph/test/test_direction.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -9,6 +9,7 @@
 
 #include <algorithm>
 #include <boost/range.hpp>
+#include <boost/concept/assert.hpp>
 
 /** @name Test Out-Directed Graph
  * Test all graphs that have directed out edges.
Modified: branches/release/libs/graph/test/test_graph.hpp
==============================================================================
--- branches/release/libs/graph/test/test_graph.hpp	(original)
+++ branches/release/libs/graph/test/test_graph.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -20,6 +20,7 @@
 #include <utility>
 #include <vector>
 #include <boost/assert.hpp>
+#include <boost/concept/assert.hpp>
 #include <boost/graph/graph_concepts.hpp>
 #include <boost/graph/graph_traits.hpp>
 #include <boost/graph/graph_mutability_traits.hpp>
Modified: branches/release/libs/graph/test/test_iteration.hpp
==============================================================================
--- branches/release/libs/graph/test/test_iteration.hpp	(original)
+++ branches/release/libs/graph/test/test_iteration.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -7,6 +7,7 @@
 #ifndef TEST_ITERATION_HPP
 #define TEST_ITERATION_HPP
 
+#include <boost/concept/assert.hpp>
 #include <algorithm>
 
 /** @name Test Vertex List
Modified: branches/release/libs/graph/test/test_properties.hpp
==============================================================================
--- branches/release/libs/graph/test/test_properties.hpp	(original)
+++ branches/release/libs/graph/test/test_properties.hpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -7,6 +7,8 @@
 #ifndef TEST_PROPERTIES_HPP
 #define TEST_PROPERTIES_HPP
 
+#include <boost/concept/assert.hpp>
+
 template<typename T> T const& as_const(T& x) { return x; }
 template<typename T> void ignore(T const&) { }
 
Modified: branches/release/libs/graph/test/vector_graph_cc.cpp
==============================================================================
--- branches/release/libs/graph/test/vector_graph_cc.cpp	(original)
+++ branches/release/libs/graph/test/vector_graph_cc.cpp	2012-01-15 18:32:09 EST (Sun, 15 Jan 2012)
@@ -7,6 +7,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 //=======================================================================
 #include <boost/config.hpp>
+#include <boost/concept/assert.hpp>
 #include <vector>
 #include <list>
 
@@ -24,9 +25,9 @@
   // Check "vector as graph"
   {
     typedef std::vector< std::list<int> > Graph;
-    function_requires< VertexListGraphConcept<Graph> >();
-    function_requires< IncidenceGraphConcept<Graph> >();
-    function_requires< AdjacencyGraphConcept<Graph> >();
+    BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept<Graph> ));
+    BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept<Graph> ));
   }
   return 0;
 }