Usando SFINAE para selecionar uma função com base na existência de uma sobrecarga específica de uma função [duplicado]

Esta pergunta já tem uma resposta aqui:

possível escrever um modelo para verificar a existência de uma funçã 25 respostas

Eu tentei escolher entre duas funções de modelo com base em uma sobrecargaoperator<<(std::ostream&, const T&) existe

Exemplo

template <typename T, typename std::enable_if</* ? */, int>::type = 0>
std::string stringify(const T& t)
{
    std::stringstream ss;
    ss << t;
    return ss.str();
}

template <typename T, typename std::enable_if</* ? */, int>::type = 0>
std::string stringify(const T& t)
{
    return "No overload of operator<<";
}

struct Foo { };

int main()
{
    std::cout << stringify(11) << std::endl;
    std::cout << stringify(Foo{}) << std::endl;
}

Isso é possível? E se sim, como você resolveria esse problema?

questionAnswers(1)

yourAnswerToTheQuestion