今天,在编写一些Visual C ++代码时,我遇到了使我感到惊讶的东西。似乎C ++支持布尔值++(递增),但不支持-(递减)。这仅仅是一个随机决定,还是背后有某些原因?
这样编译:
static HMODULE hMod = NULL;
static bool once = false;
if (!once++)
hMod = LoadLibrary("xxx");
这不是:
static HMODULE hMod = NULL;
static bool once = true;
if (once--)
hMod = LoadLibrary("xxx");
++once
和once++
gcc一起工作,但不减少。
std::exchange(once,false)
(注意:不是原子的)。