[C++] 템플릿 패턴: 타입 SFINAE -> is_class
SFINAE엔 여러가지 응용법이 있는데, 그 중 하나가 특정 타입의 특성을 확인할 수 있게 해주는 타입 SFINAE다.
c++11의 표준 헤더 type_trait에서 제공되는 타입식별 기능들이 이 패턴을 통해 구현된다.
type_trait에 있는 is_class라는 녀석을 한번 구현해보자.
이건 해당 타입이 클래스인지 아닌지를 체크해준다.
좀 복잡하다. 클래스에 대해서만 유효한 타입 치환식을 설정해놓고,
해당 치환이 선택되면 yes.
선택되지 않으면 가변인자 함수가 no를 반환하도록 했다.

int Arg::*는 Arg라는 클래스의 int 타입 멤버변수를 가리키는 포인터라는 뜻이다.
당연히 클래스가 아니면 실패할 것이다.
저렇게 잘 짰다면, 이렇게 사용할 수 있다.

잘 동작한다.