【发布时间】:2019-01-09 11:52:13
【问题描述】:
我正在寻找一种能够知道一个类型的范围是否包含在另一个类型中的类型特征。当T 类型的每个值都可以存储为U 类型的值时,is_included_in<T,U>::value 为true 的类型特征。示例:
is_included_in<float,double>::value; // true
is_included_in<double,float>::value; // false
is_included_in<int,double>::value; // true
is_included_in<bool,long int>::value; // true
is_included_in<long long int,float>::value; // false
Boost 中有什么东西可以做到这一点吗?还是我自己写?
注意:出于兼容性原因,我不使用 C++11。
【问题讨论】:
-
您也许可以根据
std::numeric_limits拼凑出一些东西。应该相当容易使用它来导出比较两个整数或两个浮点类型的规则。棘手的部分是解决整数和浮点类型之间的规则。 -
@SamVarshavchik
std::numeric_limits::digits可以在这里帮助找出尾数的大小。 -
我并没有考虑更好地限制问题,而是考虑接触这 69 位观察者。我知道这里的搜索引擎利用标签。它甚至可以更好地显示相关问题。另外,越具体越好,IMO 语言修订标签是其中的重要组成部分。
标签: c++ boost typetraits c++03