Usando SFINAE para detectar uma função de membro [duplicado]

Esta pergunta já tem uma resposta aqui:

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

No C ++ 11, para descobrir se uma classe tem uma função de membrosize, você pode definir o seguinte auxiliar de teste:

template <typename T>
struct has_size_fn
{
    typedef char (& yes)[1];
    typedef char (& no)[2];

    template <typename C> static yes check(decltype(&C::size));
    template <typename> static no check(...);

    static bool const value = sizeof(check<T>(0)) == sizeof(yes);
};

Existe um truque semelhante para fazer isso no C ++ 98 sem depender de extensões do compilador, comotypeof?

questionAnswers(2)

yourAnswerToTheQuestion