J'utilise SFINAE pour vérifier si une classe possède la fonction 'print()' ou non. Le code fonctionne mais pourquoi appeler has_print()
n'est pas ambiguë ?
class cls {
public:
void print() {
std::cout << "some text" << std::endl;
}
};
template<typename T>
auto has_print(T tt) -> decltype(T().print(), std::true_type()) {
tt.print();
return std::true_type();
}
std::false_type has_print(...) {
std::cout << "Doesn't contain print()" << std::endl;
return std::false_type();
}
int main() {
cls c;
has_print(c);
return 0;
}
Il pourrait correspondre aux deux.