【发布时间】:2018-03-10 02:16:24
【问题描述】:
我有一个Heaviside step function,它以任何数据类型的统一为中心,我使用以下代码对其进行了编码:
template <typename T>
int h1(const T& t){
if (t < 1){
return 0;
} else if (t >= 1){
return 1;
}
}
在代码审查中,我的审查者告诉我,并非所有控制路径都明确返回。编译器也没有警告我。但我不同意;条件是互斥的。我该如何处理?
【问题讨论】:
-
return t >= 1;在没有分支的情况下给你同样的... -
出于兴趣,为什么这个函数需要模板化?您是否真的将它用于不同的类型?
-
@KobyDuck 不能保证
return a+b;不会分支,或者return 1;不会分支。 C++ 对“将代码分支”做出零保证。您可以消除抽象机中的分支,并且可以使用编译器已知的习语在可用时发出无分支指令。 -
考虑在特殊情况下抛出
domain_error。 -
你有这么关心的评论者吗?数一数你的祝福!
标签: c++ templates return code-coverage