I am trying to build a custom predicate for BOOST_CHECK_PREDICATE where the predicate itself is a templated function. My example looks as follows:
3>..\boost_test\testSystem.cpp(42): 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 - 10 provided 3>
C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) : see
declaration of 'boost::test_tools::tt_detail::check_frwd'
3>..\boost_test\testSystem.cpp(42): 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 - 10 provided 3> C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) : see
declaration of 'boost::test_tools::tt_detail::check_frwd'
3>..\boost_test\testSystem.cpp(42): 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 - 10 provided 3> C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) : see
declaration of 'boost::test_tools::tt_detail::check_frwd'
3>..\boost_test\testSystem.cpp(42): error C2896: '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 *)' : cannot use function
template 'bool is_close_enough(const U &,const V &)' as a function
argument 3> ..\boost_test\testSystem.cpp(18) : see
declaration of 'is_close_enough' 3>..\boost_test\testSystem.cpp(42):
error C2784: '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 *)' : could not deduce
template argument for 'overloaded function type' from 'overloaded
function type' 3>
C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) : see
declaration of 'boost::test_tools::tt_detail::check_frwd'
3>..\boost_test\testSystem.cpp(42): 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 - 10 provided