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
?