Use explicit conversion of ifstream -> bool

C++11 standard does not allow implicit conversion (I think...).
Clang highlights this, so make standard compliant.
Add __clang__ to complier ifdef checks