I already used the SFINAE idiom quite a few times and I got used to put my std::enable_if<> in template parameters rather than in return types. However, I
std::enable_if<>
Values in the templates work:
template::value, int>::type = 0> auto foo(T) -> void { std::cout << "I'm an integer!\n"; } template::value, int>::type = 0> auto foo(T) -> void { std::cout << "I'm a floating point number!\n"; }