c++ - std::is_convertible 模板实现
问题描述
我遇到了一个实现std::is_convertible
并且对他们为什么要测试可退货性感到困惑。下面是整个实现的摘录。为什么要将 nullptr 转换为指向返回类型 T 的函数的指针?是否有不可返回类型的示例?
template<class T>
auto test_returnable(int) -> decltype(
void(static_cast<T(*)()>(nullptr)), std::true_type{}
);
template<class>
auto test_returnable(...) -> std::false_type;
解决方案
这会测试类型 T 是否可以通过 SFINAE 从函数返回,并根据结果返回 true_type 或 false_type。
例如,函数具有类型但不能从函数返回(尽管指针和对它们的引用可以)
推荐阅读
- reactjs - 如何拉直图像以及如何在底部滑块中使用项目符号我正在使用 react-coverflow 库
- c++ - C++头文件中静态成员的初始化
- apache-kafka - Kafka 消费组不断进入 PreparingRebalance 状态并停止消费
- sql - 如何在 Powershell 中使用 Read-SqlTableData 选择 SQL 中的最后 X 条记录
- excel - 删除具有给定标题/名称的列
- c++ - Usb 棒上的“访问被拒绝”CreateFile()
- powerbi - Power BI:查找 365 天的最后一个非活动时间段
- powerbi - 如何根据过滤日期范围将列除以其起始值
- javascript - 从 Chrome 中隐藏脚本标签
- c++ - 第二次 reinterpret_cast 和严格别名