Reading this article: http://www.ibm.com/developerworks/aix/library/au-ctools1_boost/?S_TACT=105AGY20&S_CMP=HP I'm using Boost 1.40.0 and Visual Studio 2005 with Visual C++ 8.0. I've entered Listing 14 with a few additional lines of logging code: #include "stdafx.h" #define BOOST_TEST_MODULE example #include <boost/test/included/unit_test.hpp> std::list<int> user_defined_func( ) { std::cout << "BEGIN: user_defined_func" << std::endl; std::list<int> l; l.push_back(8); l.push_back(0); std::cout << "END: user_defined_func" << std::endl; return l; } bool validate_list(std::list<int> &L1) { std::cout << "BEGIN: validate_list" << std::endl; std::list<int>::iterator it1 = L1.begin(); for(; it1 != L1.end(); ++it1) { if(*it1<= 1){ std::cout << "Validation failed because an item in the list was less than or equal to 1." << std::endl; std::cout << "END: validate_list" << std::endl; return false; } } std::cout << "Test passed because all of the items in the list were greater than or equal to 1" << std::endl; std::cout << "END: validate_list" << std::endl; return true; } BOOST_AUTO_TEST_SUITE( test ) BOOST_AUTO_TEST_CASE( test ) { std::list<int>& list1 = user_defined_func(); BOOST_CHECK_PREDICATE( validate_list, list1 ); } BOOST_AUTO_TEST_SUITE_END() Now when I go to compile this, it ends up giving me an error: 1>------ Build started: Project: UnitTestTests, Configuration: Debug Win32 ------ 1>Compiling... 1>UnitTestTests.cpp 1>c:\program files (x86)\boost\boost_1_40\boost\test\impl\execution_monitor.ipp(904) : warning C4535: calling _set_se_translator() requires /EHa 1>c:\program files (x86)\boost\boost_1_40\boost\test\utils\runtime\config.hpp(90) : warning C4996: 'putenv': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putenv. See online help for details. 1> c:\program files (x86)\microsoft visual studio 8\vc\include\stdlib.h(900) : see declaration of 'putenv' 1>c:\program files (x86)\boost\boost_1_40\boost\test\utils\runtime\cla\char_parameter.ipp(36) : warning C4244: 'argument' : conversion from 'boost::rtti::id_t' to 'const int', possible loss of data 1>c:\program files (x86)\boost\boost_1_40\boost\test\utils\runtime\cla\named_parameter.ipp(41) : warning C4244: 'argument' : conversion from 'boost::rtti::id_t' to 'const int', possible loss of data 1>c:\program files (x86)\boost\boost_1_40\boost\test\utils\runtime\env\environment.ipp(82) : warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 8\vc\include\stdlib.h(483) : see declaration of 'getenv' 1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(45) : error C2146: syntax error : missing ')' before identifier 'BOOST_PP_IIF_BOOST_PP_BOOL_0' 1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(45) : error C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &,const char *,const Arg2 &,const char *,const Arg3 &,const char *,const Arg4 &,const char *)' : expects 16 arguments - 6 provided 1> c:\program files (x86)\boost\boost_1_40\boost\test\test_tools.hpp(523) : see declaration of 'boost::test_tools::tt_detail::check_frwd' 1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(45) : error C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &,const char *,const Arg2 &,const char *,const Arg3 &,const char *)' : expects 14 arguments - 6 provided 1> c:\program files (x86)\boost\boost_1_40\boost\test\test_tools.hpp(523) : see declaration of 'boost::test_tools::tt_detail::check_frwd' 1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(45) : error C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &,const char *,const Arg2 &,const char *)' : expects 12 arguments - 6 provided 1> c:\program files (x86)\boost\boost_1_40\boost\test\test_tools.hpp(523) : see declaration of 'boost::test_tools::tt_detail::check_frwd' 1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(45) : error C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &,const char *)' : expects 10 arguments - 6 provided 1> c:\program files (x86)\boost\boost_1_40\boost\test\test_tools.hpp(523) : see declaration of 'boost::test_tools::tt_detail::check_frwd' 1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(45) : error C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *)' : expects 8 arguments - 6 provided 1> c:\program files (x86)\boost\boost_1_40\boost\test\test_tools.hpp(523) : see declaration of 'boost::test_tools::tt_detail::check_frwd' 1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(45) : error C2059: syntax error : ')' 1>Build log was saved at "file://c:\Users\andy\Documents\Visual Studio 2005\Projects\UnitTestTests\UnitTestTests\Debug\BuildLog.htm" It seems to have some real problems with the BOOST_CHECK_PREDICATE macro why is this? Thank you, Andrew J. Leer 1>UnitTestTests - 7 error(s), 5 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========