From: Terje Slettebø (tslettebo_at_[hidden])
Date: 2004-09-19 10:25:43


>From: "Tobias Schwinger" <tschwinger_at_[hidden]>

> 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