Hi folks,

while trying to get basebmp and vigra warning free, I've been bitten
by the following two msvc warnings:

---------------------------------------------------------------------

Compiler Warning (level 3) C4686 

'user-defined type' : possible change in behavior, change in UDT
return calling convention

A class template specialization was not is defined before it was used
in a return type. Anything that instantiates the class will resolve
C4686; declaring an instance or accessing a member (C<int>::anything)
are also options.

---------------------------------------------------------------------

Compiler Warning (level 4) C4668 

Error Message 'symbol' is not defined as a preprocessor macro,
replacing with '0' for 'directives'

A symbol that was not defined was used with a preprocessor
directive. The symbol will evaluate to false. To define a symbol, you
can use either the #define directive or /D compiler option.

---------------------------------------------------------------------

C4686 is one of those infamous 'let's warn our users, because we've
changed behaviour and fixed a nonconformant behaviour' MS noise
generators (it's about which calling convention is used for the
not-yet-instantiated return type). I'd say could safely be disabled.

C4668 can potentially unearth real portability problems (that a try to
access an undefined preprocessor macro evaluates to '0' is a
convention possibly not shared by all c++ compilers of this universe)
- unfortunately, it's implicitely relied upon by boost's
BOOST_WORKAROUND macro (boost/workaround.hpp). Since no other compiler
warns about that, I've no idea how to fix BOOST_WORKAROUND, and this
macro's use is quite abundant in boost, I'd also suggest disabling
it. This could be temporary, until upstream boost has
fixed/workarounded this.

Last, but not least there's a really annoying side effect of gcc's
-Wshadow warning: when declaring functions that overload one of the
gcc builtin functions, you get the following warning issued:

stl/stl/_complex.h:782: warning: shadowing built-in function `int
std::abs(int)'

Switching off -Wshadow cures this, as well as disabling gcc's builtins
via -fno-builtin. But both prolly aren't changes we want to do
persistently for gcc. Any other ideas?

Thanks for listening, feedback greatly appreciated,

-- 

Thorsten

If you're not failing some of the time, you're not trying hard enough.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to