cerco di specializzarsi un modello se una classe ha una speciale funzione membro come questo (che si trova qui in un altro esempio):modello per verificare l'esistenza di sovraccarico funzione membro
template <typename T>
class has_begin
{
typedef char one;
typedef long two;
template <typename C> static one test(decltype(&C::AnyFunc)) ;
template <typename C> static two test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(char) };
enum { Yes = sizeof(has_begin<T>::test<T>(0)) == 1 };
enum { No = !Yes };
};
Questo metodo funziona bene fino a quando AnyFunc
è sovraccaricato :
class B : public vector<int>
{
public:
void AnyFunc() const;
void AnyFunc();
};
Come posso riscrivere il codice di prova per ottenere un "Sì" dal modello?
Buona domanda. Un problema molto banale che può passare silenziosamente inosservato a causa di SFINAE. – iammilind