33 lines
634 B
C++
33 lines
634 B
C++
//
|
|
// Created by light on 20-1-5.
|
|
//
|
|
#include <iostream>
|
|
|
|
using namespace std;
|
|
|
|
template <typename T> class IsClassT {
|
|
private:
|
|
typedef char One;
|
|
typedef struct {
|
|
char a[2];
|
|
} Two;
|
|
|
|
template <typename C> static One test(int C::*);
|
|
|
|
// Will be chosen if T is anything except a class.
|
|
template <typename C> static Two test(...);
|
|
|
|
public:
|
|
enum { Yes = sizeof(IsClassT<T>::test<T>(0)) == 1 };
|
|
enum { No = !Yes };
|
|
};
|
|
|
|
struct A {};
|
|
|
|
int main() {
|
|
// 0不能转换为int int::*因为int不是类,所以它不能有成员指针。
|
|
cout << IsClassT<int>::Yes << endl;
|
|
cout << IsClassT<A>::Yes << endl;
|
|
|
|
return 0;
|
|
} |