传入的模板类型与基类型或对象的比较

Comparisons of template type passed in, to basetypes or objects

本文关键字:类型 对象 比较 基类      更新时间:2023-10-16

是否可以比较以形式传递给函数的模板类型

/* Stuff prior to the function being called */
template <class BaseType>
void foo(BaseType bar){
    if(BaseType == 'Class made Object || some primitive Datatype')
    // This in hopes to make just one function that accepts, as a template, any argument
}

==运算符不起作用,从某种意义上说,它是应该起作用的,这是在C++中。我知道Java有类,但不确定过去的任何内容,我还没有开始自学。/***************************************************
从评论中添加以扩展给定问题
***************************************************/
我对模板atm的概念还很陌生,我了解它们的总体工作方式,并了解它们是如何传递的,但我希望能够从用模板参数调用的函数中判断传递给它的是什么,正如问题所说,目前正在尝试获取BaseType,无论它是创建的对象还是原始数据类型之一。这很复杂,但我想看看是否可以在模板中用不同的参数在同一个函数上进行分离。也可以在主要问题中添加此评论,希望这不会违反SO法规。

您可以使用:

template <class BaseType>
void foo(BaseType bar){
    if ( std::is_class<BaseType>::value || std::is_fundamental<BaseType>::value )
    {
    }
}

然而,根据您试图解决的问题,模板专业化可能同样有效或更好。