템플릿 인수의 활성화_if_t 재정의 오류
C에서는 코드를 새로운 구문. 다음 코드는 문제를 보여줍니다.
template<typename T, typename std::enable_if<std::is_same<int, T>::value>::type* = nullptr> void f() { } template<typename T, typename = std::enable_if_t<std::is_same<int, T>::value>> void g() { }
GCC(5.2)로 컴파일하면 오류가 발생합니다.
"오류: '템플릿<클래스 T, 클래스> void g()' 재정의 "
오류 원인
이 오류는 두 템플릿 함수 f와 g가 동일한 템플릿 유형 void()를 가지고 있기 때문에 발생합니다. 두 번째 템플릿 인수의 기본값은 다르지만 여전히 유형은 동일합니다.
해결책
문제를 해결하려면 std::를 사용하도록 구문을 업데이트하세요. 다른 두 번째 인수 유형을 사용하는 활성화_if_t. 예:
template<typename T, std::enable_if_t<std::is_same<int, T>::value, int>* = nullptr> void f() { } template<typename T, std::enable_if_t<std::is_same<double, T>::value, double>* = nullptr> void g() { }
이 수정을 통해 두 템플릿 함수가 서로 다른 템플릿 유형을 갖도록 하고 재정의 오류를 제거합니다.
위 내용은 템플릿 인수에서 `enable_if_t`에 대한 재정의 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!