đề cập đến bài đăng hôm qua, điều này đánh thức tôi dậy sáng nay. Tại sao điều này thực sự hiệu quả? Miễn là chức năng test
có liên quan, chức năng này không có cơ thể để làm thế nào nó có thể thực hiện bất cứ điều gì? Tôi muốn biết tại sao và cách thức hoạt động của nó? Tôi thực sự quan tâm để xem câu trả lời của bạn.Tại sao tính năng này hoạt động (Mẫu, SFINAE). C++
template<typename T>
class IsClassT {
private:
typedef char One;
typedef struct { char a[2]; } Two;
template<typename C> static One test(int C::*); //NO BODY HERE
template<typename C> static Two test(…); //NOR HERE
public:
enum { Yes = sizeof(IsClassT<T>::template test<T>(0)) == sizeof(One) };
enum { No = !Yes };
};
Cảm ơn trước với sự giúp đỡ để hiểu hiện tượng rất thú vị này.
Đối với Standardese, xem '3.2/2' và' 3.2/3' (cả về nghĩa của "sử dụng" và hậu quả của "sử dụng "một cái gì đó). –