SFINAE

What does SFINAE stand for, and what does it enable?

template<typename T>
auto serialize(T val) -> decltype(val.toString(), std::string())
{ return val.toString(); }

template<typename T>
std::string serialize(T val)
{ return std::to_string(val); }