如何確定類型是否來自模板類?特別是,我需要確定模板參數是否具有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語句中的一條返回行代替整個if/else分支! – AshleysBrain 2011-05-13 22:34:14
是'typename T'的完整類型嗎?你會在代碼中指定爲「/ *任何* /'? – iammilind 2011-05-14 06:29:15
在我的情況下,我只希望看到那裏的整體字符類型。我相信basic_ostream不能被實例化,除非'/ * anything * /'是一個完整的類型。 – 2011-05-14 13:11:30