#include <iostream>
using namespace std;
class Tensor
{
public:
Tensor& setA() { cout << "A"; return *this; }
Tensor& setB() { cout << "B"; return *this; }
Tensor& setC() { cout << "C"; return *this; }
Tensor& setD() { cout << "D"; return *this; }
Tensor& setE() { cout << "E"; return *this; }
Tensor& noOp() { return *this; }
void build() { cout << endl; }
};
void doTest(bool flag)
{
Tensor& (Tensor::*temp)() = flag ? &Tensor::setE : &Tensor::noOp;
(Tensor{}
.setA()
.setB()
.setC()
.setD()
.*temp)()
.build();
}
int main()
{
doTest(false);
doTest(true);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgVGVuc29yCnsKcHVibGljOgoJVGVuc29yJiBzZXRBKCkgeyBjb3V0IDw8ICJBIjsgcmV0dXJuICp0aGlzOyB9CiAgICBUZW5zb3ImIHNldEIoKSB7IGNvdXQgPDwgIkIiOyByZXR1cm4gKnRoaXM7IH0KICAgIFRlbnNvciYgc2V0QygpIHsgY291dCA8PCAiQyI7IHJldHVybiAqdGhpczsgfQogICAgVGVuc29yJiBzZXREKCkgeyBjb3V0IDw8ICJEIjsgcmV0dXJuICp0aGlzOyB9CiAgICBUZW5zb3ImIHNldEUoKSB7IGNvdXQgPDwgIkUiOyByZXR1cm4gKnRoaXM7IH0KICAgIFRlbnNvciYgbm9PcCgpIHsgcmV0dXJuICp0aGlzOyB9CiAgICB2b2lkIGJ1aWxkKCkgeyBjb3V0IDw8IGVuZGw7IH0KfTsKCnZvaWQgZG9UZXN0KGJvb2wgZmxhZykKewoJVGVuc29yJiAoVGVuc29yOjoqdGVtcCkoKSA9IGZsYWcgPyAmVGVuc29yOjpzZXRFIDogJlRlbnNvcjo6bm9PcDsKCiAgICAoVGVuc29ye30KICAgIC5zZXRBKCkKICAgIC5zZXRCKCkKICAgIC5zZXRDKCkKICAgIC5zZXREKCkKICAgIC4qdGVtcCkoKQogICAgLmJ1aWxkKCk7Cn0KCmludCBtYWluKCkKewoJZG9UZXN0KGZhbHNlKTsKCWRvVGVzdCh0cnVlKTsKCXJldHVybiAwOwp9