最佳答案
我不明白冒号的一个特殊用法。
我在《比雅尼·斯特劳斯特鲁普》第4版第11.4.4节“来电和回复”第297页找到了这本书:
void g(double y)
{
[&]{ f(y); } // return type is void
auto z1 = [=](int x){ return x+y; } // return type is double
auto z2 = [=,y]{ if (y) return 1; else return 2; } // error: body too complicated
// for return type deduction
auto z3 =[y]() { return 1 : 2; } // return type is int
auto z4 = [=,y]()−>int { if (y) return 1; else return 2; } // OK: explicit return type
}
令人困惑的冒号出现在第7行的 return 1 : 2
语句中。我不知道会是什么。这不是一个标签或三元运算符。
它看起来像一个没有第一个成员(也没有 ?
)的条件三元运算符,但是在这种情况下,我不明白在没有条件的情况下它是如何工作的。