#include <cmath>
#include <iostream>
using namespace std;
template<typename ValueType>
decltype(ValueType{} == ValueType{}) Compare(const ValueType& value, const ValueType& expected)
{
return value == expected;
}
template<>
decltype(float{} == float{}) Compare<float>(const float& value, const float& expected)
{
return std::abs(value - expected) < 1e-4F;
}
int main() {
float foo = 13.0F;
float bar = 42.0F;
cout << Compare(foo, bar) << endl;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgpkZWNsdHlwZShWYWx1ZVR5cGV7fSA9PSBWYWx1ZVR5cGV7fSkgQ29tcGFyZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIGV4cGVjdGVkKQp7CiAgcmV0dXJuIHZhbHVlID09IGV4cGVjdGVkOwp9Cgp0ZW1wbGF0ZTw+CmRlY2x0eXBlKGZsb2F0e30gPT0gZmxvYXR7fSkgQ29tcGFyZTxmbG9hdD4oY29uc3QgZmxvYXQmIHZhbHVlLCBjb25zdCBmbG9hdCYgZXhwZWN0ZWQpCnsKICByZXR1cm4gc3RkOjphYnModmFsdWUgLSBleHBlY3RlZCkgPCAxZS00RjsKfQoKaW50IG1haW4oKSB7CiAgZmxvYXQgZm9vID0gMTMuMEY7CiAgZmxvYXQgYmFyID0gNDIuMEY7CgogIGNvdXQgPDwgQ29tcGFyZShmb28sIGJhcikgPDwgZW5kbDsKfQ==