我有这样的代码
template <typename T> void fun (T value)
{
.....
value.print (); //Here if T is a class I want to call print (),
//otherwise use printf
.....
}
现在,要打印该值,如果T是一个类,我想调用该对象的打印函数,但如果T是一个基本数据类型,我只想使用printf。
那么,如何判断Template类型是基本数据类型还是类呢?
你可以使用std::is_class http://en.cppreference.com/w/cpp/types/is_class(并且可能std::is_union
)。详细信息取决于您对“基本类型”的定义。查看有关类型支持的更多信息here http://en.cppreference.com/w/cpp/types.
但请注意,在 C++ 中通常会重载std::ostream& operator<<(std::ostream&, T)
用于打印用户定义的类型T
。这样,您无需担心传递给函数模板的类型是否是类:
template <typename T> void fun (T value)
{
std::cout << value << "\n";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)