Bir şablon sınıfından türetilmiş olup olmadığını nasıl belirleyebilirim? Özellikle, bir şablon parametresinin bir temel sınıf olarak std::basic_ostream
olup olmadığını belirlemem gerekir. Normalde std::is_base_of
, iş için bir araçtır. Ancak, std::is_base_of
yalnızca sınıf şablonları değil, tam türler için çalışır.Bir şablon sınıfından tür türetilir nasıl belirlenir?
Bunun gibi bir şey arıyorum.
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;
}
}
Bunun mümkün olabileceğine eminim.
Sadece içeri atmak istediğinizde, if/else dalının tamamını if ifadesinde koşulu döndüren tek bir 'return' satırı ile değiştirebilirsiniz! – AshleysBrain
, "T türünde bir" tipi değil mi? Kodunuzda ne/* bir şey */'olarak belirtin? – iammilind
Benim durumumda, orada sadece integral karakter tiplerini görmeyi beklerdim. Ben/* bir şey */'tam bir tür olmadıkça basic_ostream'in başlatılamayacağını düşünüyorum. –