【发布时间】:2014-11-10 01:39:18
【问题描述】:
是否可以比较传递给函数的模板类型
/* 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++ 中。
/************************************************* **
从评论中添加以扩展给定问题。
****************************************************** */
我对模板 atm 的概念非常陌生,我了解它们的整体工作方式并了解它们是如何传递的,但希望能够从使用模板参数调用的函数中分辨出传递给它的内容,因为问题说,目前正在尝试获取 BaseType 是创建的对象还是原始数据类型之一。它很复杂,但我想看看是否有可能在模板中通过传入不同的参数在同一个函数上做不同的点。也可以将此评论添加到主要问题中,希望这不违反 SO 规定。
【问题讨论】:
-
我认为您需要模板专业化,但我对此感到生疏。
-
C++11 提供了一长串用于处理类型的函数。看看en.cppreference.com/w/cpp/types。
-
我对模板 atm 的概念还很陌生,我了解它们的整体工作方式并了解它们是如何传递的,但希望能够从使用模板参数调用的函数中分辨出来正如问题所说,传递给它的内容当前试图获取 BaseType 是创建的对象还是原始数据类型之一。它很复杂,但我想看看是否有可能在模板中通过传入不同的参数在同一个函数上做不同的点。也可以将此评论添加到主要问题中,希望这不违反 SO regs。
-
在你的点 RSahu 下,我是否应该尝试查看传递给函数 is_object 的点,而不是尝试描述传递给给定函数的 BaseType,然后在本身,如果是这种情况,它将对当前的应用程序有所帮助,但是有没有办法实际获取传入的 BAseType,C++ 必须以某种方式存储它才能使用它吗?例如调用函数并在传递给它的
中声明。