# Copyright David Abrahams 2003.
# Distributed under the Boost Software License, Version 1.0. 
# (See accompanying file LICENSE_1_0.txt or copy at 
# http://www.boost.org/LICENSE_1_0.txt)

# For more information, see http://www.boost.org/

project
    : requirements <library>/boost/test//boost_test_exec_monitor
    ;

test-suite utility/enable_if
        :
        [ run constructors.cpp ]
        [ run dummy_arg_disambiguation.cpp ]
        [ run lazy.cpp ]
        [ run lazy_test.cpp ]
        [ run member_templates.cpp ]
        [ run namespace_disambiguation.cpp ]
        [ run no_disambiguation.cpp ]
        [ run partial_specializations.cpp ]
    ;

