编译时:
from functools import wraps
def decobj(func):
@wraps(func)
def wrapper(self, *args, **kwards):
with self.lock:
print 'Got the lock'
func(self, *args, **kwards)
return wrapper
编译器(gcc 4.9.2,-std = c ++ 11或c ++ 14)失败,给出错误:
constexpr double x {123.0};
constexpr double y = x / 0.0;
std::cout << x << " / 0 = " << y << "\n";
在决定(1.23e+2 / 0.0)' is not a constant expression
constexpr double y = x / 0.0;
是否可以成为 constexpr 时,结果(Inf)如何相关?
作为参考,这似乎是这样做的方法:
y
答案 0 :(得分:5)
Infinity是一个实现定义的结果,标准不需要IEEE floating point,除零正式为undefined behavior和constant expression have an exclusion for undefined behavior。
从草案C ++标准部分5.6
[expr.mul] :
二进制/运算符产生商和二进制%运算符 从第一个表达式的除法得到余数 第二。 如果/或%的第二个操作数为零,则行为为 未定义。强>