
From: "Tobias Schwinger" <tschwinger@neoscientists.org>
I attached some experimental source code for the prefiltering of an operator+ check to clearify the basic idea (compiles with GCC and MSVC and CVS version of boost).
It works indeed with GCC and MSVC, but Intel C++ 7.1 had some serious problems with it. The following is one of several of the same kind of error messages I got: op_test_prefilter_test.cpp(72): error: more than one instance of overloaded function "filter" matches the argument list: function "filter(integral, integral)" function "filter(integral, real)" function "filter(real, integral)" function "filter(real, real)" argument types are: (int, int) BOOST_STATIC_CONSTANT(int, state = ( sizeof(filter(arg1, arg2)) )); ^ detected during instantiation of class "op_test_input_filter<T1, T2, Operation> [with T1=int, T2=int, Operation=always]" at line 162 I haven't had a chance to examine the implementation, yet (but intend to), but maybe the above error could be of help to point out any problem. "BOOST_STATIC_ASSERT(false);" also had to be changed to "BOOST_STATIC_ASSERT((T1 *) 0);", in order to avoid premature instantiation, since "false" is not dependent on the template arguments. Regards, Terje