With explicit conversion operators you can fix this:
"if (-0.5 <= x <= 0.5) return 0;"
for x that are not built-in types.
You would need to create your own Bool type, something like defined below, and overload <= operators for x type, returning Bool. This way you will get compile time error.
I couldn't bear looking at how bloated C++ implementation is, so I implemented it in C++11 based on boost.fiber library: https://gist.github.com/4015306. Now it looks very similar to Go language code.
class Bool { bool value; public: Bool(bool v) : value(v) {} explicit operator bool () { return value; } };