특정 멤버 함수가 있는 타입만 받는 함수

하루공부·2024년 1월 21일
0

C++

목록 보기
19/25
post-thumbnail

C++ 아이콘 제작자: Darius Dan - Flaticon


  • 어떠한 멤버 함수가 있는 타입을 받아 보자
template <typename T, typename = decltype(std::declval<T>().func())>
void test(const T& t) {}
  • 여기서 리턴 타입까지 선택하자
template <typename T, typename = std::enable_if_t<std::is_integral_v<decltype(std::declval<T>().func())>>>
void test(const T& t) {}

이러면 전달받은 T에 func() 이라는 함수가 있어야 하고 리턴 타입이 int형이여야 잘 작동한다.


  • 멤버 함수를 여러개를 확인하고 싶을 떄는?
    ==> 그냥 뒤에 계속 작성 하면된다.
template <typename T, typename = std::enable_if_t<std::is_integral_v<decltype(std::declval<T>().func())>>
                    , typename = std::enable_if_t<std::is_class<decltype(std::declval<T>().func())>::type>>
void test(const T& t) {}

공부한 내용 복습

개인 공부 기록용 블로그입니다.
틀린 부분 있으다면 지적해주시면 감사하겠습니다!!

0개의 댓글