此问题已在此处有答案:
How to tell if a type is an instance of a specific template class?(4个答案)
两年前关闭。
在下面的代码中:
template <typename T>
struct templatedStruct
{
};
template <typename T>
void func(T arg)
{
// How to find out if T is type templatedStruct of any type, ie., templatedStruct<int> or
// templatedStruct<char> etc?
}
int main()
{
templatedStruct<int> obj;
func(obj);
}
是从其他对象继承templatedStruct的唯一方法吗?
struct Base {};
template <typename T>
struct templatedStruct : Base
{
};
template <typename T>
void func(T arg)
{
std::is_base_of_v< Base, T>;
std::derived_from<T, Base>; // From C++ 20
}
2条答案
按热度按时间deyfvvtc1#
你可以为它定义一个类型trait。
然后
LIVE
ocebsuys2#
你可以写一个重载集,它以不同的方式处理这些情况,并相应地返回一个布尔值:
然后像这样使用它: