在C++上实现静态强制转换
implement static cast on C++
我正在尝试实现静态强制转换。我需要检查类型 T 和你是否隐式可转换,如果没有,请检查一个是否从另一个继承。我可以编写一个类来检查它们中的每一个,但我不明白如何检查隐式转换,如果它不编译,请检查继承。
编译时需要打开的所有检查
您可以将type_traits
,特别是std::is_convertible
与std::is_base_of
结合使用:
template<typename T, typename U, typename std::enable_if<std::is_convertible<T, U>::value ||
std::is_base_of<T, U>::value>::type* = nullptr>
T mystatic_cast(U &u)
{
return u;
}
现场演示
相关文章:
- enable_if转换构造函数(静态强制转换,is_base_of)
- 使用转换器提升 Python 问题 - 静态链接
- 不要使用静态强制转换进行算术转换(cpp-core-guidelines)
- C++实用程序::转换在静态链接库中不起作用
- 静态成员变量不会由 gettext 转换
- C++ 将静态方法转换为简单方法
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- 静态强制转换内的表达式
- 了解类构造函数的静态强制转换
- 如何对以下程序使用静态或动态转换
- 我需要静态转换我的数字模板值吗
- 引用的静态强制转换强制模板实例化,其中不完整的类型很好
- 为什么静态向下转换unique_ptr不安全?
- 将私有结构哈希器运算符转换为静态
- 使用静态转换,因为动态转换失败.不好的做法?
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 如何在预处理器 (#if) 中强制转换静态 const 以避免溢出
- 转换静态哈希表到动态哈希表