Как определить, является ли тип производным от класса шаблона?

Как я могу определить, является ли тип производным от класса шаблона? В частности, мне нужно определить, имеет ли параметр шаблона 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;
   }
}

Я уверен, что это можно сделать, я не знаю, как .

12
задан Johannes Schaub - litb 3 October 2011 в 13:01
поделиться