#include <iostream>
#include <random>
#include <vector>
int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0,1);
// Use fifty-fifty coin tosses to set some booleans.
// In actual code, these will be set by some condition.
bool set_a = dis(gen) < 0.5;
bool success = dis(gen) < 0.5;
bool get_last = dis(gen) < 0.5;
// Don't ever do this!
int a = 0, b = 0;
(set_a ? a : b) = 42;
std::cout << "a=" << a << " b=" << b << '\n';
// On the other hand, there's nothing at all wrong with this.
std::cout << "Status = " << (success ? "Success" : "Failure") << '\n';
// There's nothing at all wrong with this, either.
std::vector<int> buffer(42);
int nlines = get_last ? 1 : buffer.size();
std::cout << "nlines = " << nlines << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8dmVjdG9yPgoKCmludCBtYWluKCkgewoJc3RkOjpyYW5kb21fZGV2aWNlIHJkOwogICAgc3RkOjptdDE5OTM3IGdlbihyZCgpKTsKICAgIHN0ZDo6dW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjw+IGRpcygwLDEpOwogICAgCiAgICAvLyBVc2UgZmlmdHktZmlmdHkgY29pbiB0b3NzZXMgdG8gc2V0IHNvbWUgYm9vbGVhbnMuCiAgICAvLyBJbiBhY3R1YWwgY29kZSwgdGhlc2Ugd2lsbCBiZSBzZXQgYnkgc29tZSBjb25kaXRpb24uCglib29sIHNldF9hID0gZGlzKGdlbikgPCAwLjU7CiAgICBib29sIHN1Y2Nlc3MgPSBkaXMoZ2VuKSA8IDAuNTsKICAgIGJvb2wgZ2V0X2xhc3QgPSBkaXMoZ2VuKSA8IDAuNTsKCiAgICAvLyBEb24ndCBldmVyIGRvIHRoaXMhCglpbnQgYSA9IDAsIGIgPSAwOwoJKHNldF9hID8gYSA6IGIpID0gNDI7CiAgICBzdGQ6OmNvdXQgPDwgImE9IiA8PCBhIDw8ICIgIGI9IiA8PCBiIDw8ICdcbic7CgogICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHRoZXJlJ3Mgbm90aGluZyBhdCBhbGwgd3Jvbmcgd2l0aCB0aGlzLgogICAgc3RkOjpjb3V0IDw8ICJTdGF0dXMgPSAiIDw8IChzdWNjZXNzID8gIlN1Y2Nlc3MiIDogIkZhaWx1cmUiKSA8PCAnXG4nOwoKICAgIC8vIFRoZXJlJ3Mgbm90aGluZyBhdCBhbGwgd3Jvbmcgd2l0aCB0aGlzLCBlaXRoZXIuCiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGJ1ZmZlcig0Mik7CiAgICBpbnQgbmxpbmVzID0gZ2V0X2xhc3QgPyAxIDogYnVmZmVyLnNpemUoKTsKICAgIHN0ZDo6Y291dCA8PCAibmxpbmVzID0gIiA8PCBubGluZXMgPDwgJ1xuJzsKCn0=