在三元运算符的else部分"什么都不做"?

Ton*_*ony 0 c++ ternary-operator

添加到三元运算符的标准行是什么,以便在不满足条件时不执行任何操作?

例:

int a = 0;
a > 10 ? a = 5 : /*do nothing*/;
Run Code Online (Sandbox Code Playgroud)

使用a似乎可以解决问题,但我想知道是否有更普遍接受的方式.

Hel*_*t D 12

那样做:

a = a > 10 ? 5 : a;
Run Code Online (Sandbox Code Playgroud)

或者干脆:

if (a > 10) a = 5;
Run Code Online (Sandbox Code Playgroud)


Hol*_*Cat 5

另外一个选择:

a ? void(a = 0) : void();
Run Code Online (Sandbox Code Playgroud)

这个的好处是,即使您无法构造一个实例来decltype(a = 0)放入“不执行任何操作”表达式,它也能工作。(无论如何,这对于原始类型来说并不重要。)