*[This question is related to but not the same as [this one](https://stackoverflow.com/questions/206106/is-a-safe-way-to-convert-to-bool-in-c).]*

My compiler warns about implicitly converting or casting certain types to bool whereas explicit conversions do not produce a warning:

```
long t = 0;
bool b = false;
b = t;                    // performance warning: forcing long to bool
b = (bool)t;              // performance warning
b = bool(t);              // performance warning
b = static_cast<bool>(t); // performance warning
b = t ? true : false;     // ok, no warning
b = t != 0;               // ok
b = !!t;                  // ok

```

This is with Visual C++ 2008 but I suspect other compilers may have similar warnings.

So my question is: what is the performance implication of casting/converting to `bool`? Does explicit conversion have better performance in some circumstance (e.g., for certain target architectures or processors)? Does implicit conversion somehow confuse the optimizer?

Microsoft's [explanation](http://msdn.microsoft.com/en-us/library/b6801kcy.aspx) of their warning is not particularly helpful. They imply that there is a good reason but they don't explain it.