c++ - 在 if constexpr 分支中产生编译器错误的惯用方法
问题描述
我发现自己有这种类型的代码,
template<class T>
void f(T const& t){
if constexpr(std::is_same<T, double>{}) call_a(t); // call_a only compiles for double
else if constexpr(std::is_same<T, float >{}) call_b(t); // call_b only compiles for float
else assert(0 && "not implemented");
}
产生编译器错误而不是运行时错误的惯用方法是什么?(一个硬错误就可以了。)
我虽然这会工作,
else static_assert(0, "not implemented");
但它使代码无条件地无法编译。
当然,我可以在条件之外添加,static_assert(std::is_same<T, double>{} or std::is_Same<T, float>
但基本上我是在重复 if 语句中的条件。
解决方案
推荐阅读
- java - 使用 Java 字段映射弹性索引字段的问题
- javascript - 如何过滤多维json文件以匹配输入值
- angular - 网格线未显示primeng表
- python - 将数据从 postgres 同步到 Elastic Search 时出现 Logstash 映射异常
- python - 创建任务收集器无限期地阻塞程序
- authentication - Python 令牌认证
- python - assert HTTPException in pytest
- node.js - 72 小时后自动终止 PM2 Cron 作业?
- javascript - 表单根据插入的数据提交到特定的url
- ios - Flutter iOS 应用程序不适用于 xcode 模拟器 - 如何修复它?