CONSTRUCT

Category
아이템: 
포스트 갯수1

[C++] 특정 멤버 함수가 있는지 판별하기(std::declval을 사용하여)

템플릿 인자에 특정 함수가 있는지 확인하고 싶을 때가 있다. 예를 들어, 입력이 들어오면 정수를 반환하는 단순한 템플릿 클래스를 구현하려고 한다. template <typename Ty> int GetVal(Ty val) { return (int)val; } 이 때 primitive type(char, short, int, long, float, double…)이 아닐 경우에는 컴파일이 실패하지만, length() 함수가 있으면 그 값을 반환하게 하고 싶다. 예시로, std::string의 경우부터 처리해보자. 템플릿 특수화(TemplateSpecialization)을 사용하여 처리한다. template <> int GetVal(std::string val) {