|
|
1
4
您可以使用模板专门化来获得所需的内容。
在这段代码中,如果传入
|
|
|
2
5
|
|
|
3
2
最简单的方法是创建一个类型traits对象。基本上,您可以创建一个对象(我们称之为基本对象<T>)由类型参数化并默认从boost::type\u traits::no\u type继承的;然后在所有基本类型上专门化对象,使专门化从boost::type\u traits::yes\u type继承。因此,您可以使用is\u basic<T>::值作为布尔值,它将告诉您类型T是否为基本类型。在大多数情况下,你真的不需要知道一个类型是否是基本的,当你知道的时候,它几乎总是涉及模板,无论如何,所以不妨这样做。 boost::type_traits::is_fundamental 这正是你想要的。你可以看到 is_fundamental.hpp 他们用他们的其他类型特征来定义它;如果一个类型是内置的算术类型,或者是“void”类型(也被认为是基本类型),那么它就是基本类型。试图从Boost中找出一些问题可能会让人困惑,但简单的做法是:
这基本上就是创建这样一个类型traits对象所需要的。请注意,对于非基本类型,可以恶意地将类型特性专门化为true,尽管无论如何,大多数情况都是这样。 然后你可以使用上面的方法来创建一个更具功能性的东西。例如,使用boost::type\u traits::is\u basic类,可以创建以下内容:
|
|
AstralHex · 矩阵乘法代码工作不正常 10 月前 |
|
|
Giogre · 为包含许多数值字段的简单“struct”重载比较运算符 10 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 10 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 11 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 11 月前 |