c++ - 类型之间是否有类型特征检查包含?

标签 c++ boost typetraits c++03

我正在寻找能够知道一个类型的范围是否包含在另一个类型中的类型特征。 is_included_in<T,U>::value 的类型特征是true当每个类型的值 T可以存储为 U 类型的值.示例:

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。

最佳答案

不,您必须自己制作。

话虽这么说,如果你想用它来使算术转换值安全,Boost 已经有了 numeric_cast实现了这一点。

因此,根据您的目标,您可能不需要特质。

至少您可以检查 numeric_cast 实现并使用其原理来构建您自己的特征。

关于c++ - 类型之间是否有类型特征检查包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109509/

相关文章:

c++ - 在调用 C++ 运算符重载时识别调用上下文/用法

c++ - 俄罗斯农民乘法算法的时间复杂度?

C++ directory_iterator

c++ - boost odeint 是否支持通过 Boost.Units 进行维度分析?

c++ - 为什么我不能添加一个带有类型查找的抽象层来剥离 C++ 中的引用?

c++ - 使用多个声明引用另一个类

c++ - 如何在 C/C++ 中使用 CAP_REWINDPAGE 作为 TWAIN api?

c++ - 使用 boost 将 C++ 对象传递给 python

c++ - 比较范围构造函数中的迭代器 value_type

c++ - operator<< 智能指针重载