What does this colon mean? It is not labeling, it is not ternary operator?

What does this colon mean? It is not labeling, it is not ternary operator?

I don't understand one particular use of a colon.

I don't understand one particular use of a colon.

I found it in the book "The C++ programming language" by Bjarne Stroustrup, 4th edition, section 11.4.4, page 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 retur n type deduction
auto z3 =[y]() { return 1 : 2; } // (Me: HERE!!!) return type is int
auto z4 = [=,y]()−>int { if (y) return 1; else return 2; } // OK: explicit return type
}

All comments from Stroustrup, except the one inside the parentheses.

I have no idea what it could be.

It seems like a conditional ternary operator without the first member (and without the "?"), but in that case I don't understand how it could work without a condition.

Angular 9 Tutorial: Learn to Build a CRUD Angular App Quickly

What's new in Bootstrap 5 and when Bootstrap 5 release date?

Brave, Chrome, Firefox, Opera or Edge: Which is Better and Faster?

How to Build Progressive Web Apps (PWA) using Angular 9

What is new features in Javascript ES2020 ECMAScript 2020

C/C++ vs. Rust: A developer’s perspective

In this post, you'll see the difference between Rust and C/C++ in a developer’s perspective

Variable Introduction in C#[Bangla]

LIKE | COMMENT | SHARE | SUBSCRIBE A variable is nothing but a name given to a storage area that our programs can manipulate. Each variable in C# has a speci...