유형이 템플릿 클래스에서 파생되었는지를 어떻게 확인할 수 있습니까? 특히 템플릿 매개 변수의 기본 클래스가 std::basic_ostream
인지 확인해야합니다. 일반적으로 std::is_base_of
은 작업을위한 도구입니다. 그러나 std::is_base_of
은 클래스 템플릿이 아닌 완전한 유형에서만 작동합니다.형식이 템플릿 클래스에서 파생되었는지 확인하는 방법?
나는 이것을 (를) 다음과 같이 찾고 있습니다.
template< typename T >
bool is_based_in_basic_ostream(T&& t)
{
if(std::is_base_of< std::basic_ostream< /*anything*/>, T >::value)
{
return true;
}
else
{
return false;
}
}
나는 어떻게 생각할 수 없다고 확신합니다.
그냥 던져 넣고 싶다면 ... if 문에서 조건을 반환하는 하나의'return' 라인으로 if/else 브랜치 전체를 바꿀 수 있습니다! – AshleysBrain
은 완전한 형태의'typename T '입니까? 당신은 당신의 코드에서'/ * anything * /'으로 무엇을 지정할 것입니까? – iammilind
필자의 경우 필자는 정수형 문자 만 볼 것으로 기대하고 있습니다. 나는 basic_ostream이'/ * anything * /'가 완전한 타입이 아니면 인스턴스화 될 수 없다고 생각한다. –