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 respostasEu 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?