#include <iostream>
using namespace std;
template <typename T>
class Interleave {
T a, b;
bool check = false;
public:
Interleave(T a, T b) {
this->a = a;
this->b = b;
}
T getValue() {
check = !check;
return check ? a : b;
}
};
int getNumber() {
static Interleave<int> numero(10, 20);
return numero.getValue();
}
int main() {
Interleave<int> numero(10, 20);
cout << numero.getValue() << endl;
cout << numero.getValue() << endl;
cout << numero.getValue() << endl;
Interleave<string> texto("aaa", "bbb");
cout << texto.getValue() << endl;
cout << texto.getValue() << endl;
cout << texto.getValue() << endl;
cout << getNumber() << endl;
cout << getNumber() << endl;
cout << getNumber() << endl;
}
//https://pt.stackoverflow.com/q/45723/101
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgSW50ZXJsZWF2ZSB7CglUIGEsIGI7Cglib29sIGNoZWNrID0gZmFsc2U7CglwdWJsaWM6CgkJSW50ZXJsZWF2ZShUIGEsIFQgYikgewoJCQl0aGlzLT5hID0gYTsKCQkJdGhpcy0+YiA9IGI7CgkJfQoJCiAgICAgICAgVCBnZXRWYWx1ZSgpIHsKCSAgICAgICAgY2hlY2sgPSAhY2hlY2s7CiAgICAJICAgIHJldHVybiBjaGVjayA/IGEgOiBiOwogICAgCX0KfTsKCmludCBnZXROdW1iZXIoKSB7CglzdGF0aWMgSW50ZXJsZWF2ZTxpbnQ+IG51bWVybygxMCwgMjApOwogICAgcmV0dXJuIG51bWVyby5nZXRWYWx1ZSgpOwp9CgppbnQgbWFpbigpIHsKICAgIEludGVybGVhdmU8aW50PiBudW1lcm8oMTAsIDIwKTsKICAgIGNvdXQgPDwgbnVtZXJvLmdldFZhbHVlKCkgPDwgZW5kbDsKICAgIGNvdXQgPDwgbnVtZXJvLmdldFZhbHVlKCkgPDwgZW5kbDsKICAgIGNvdXQgPDwgbnVtZXJvLmdldFZhbHVlKCkgPDwgZW5kbDsKCiAgICBJbnRlcmxlYXZlPHN0cmluZz4gdGV4dG8oImFhYSIsICJiYmIiKTsKICAgIGNvdXQgPDwgdGV4dG8uZ2V0VmFsdWUoKSA8PCBlbmRsOwogICAgY291dCA8PCB0ZXh0by5nZXRWYWx1ZSgpIDw8IGVuZGw7CiAgICBjb3V0IDw8IHRleHRvLmdldFZhbHVlKCkgPDwgZW5kbDsKCiAgICBjb3V0IDw8IGdldE51bWJlcigpIDw8IGVuZGw7CiAgICBjb3V0IDw8IGdldE51bWJlcigpIDw8IGVuZGw7CiAgICBjb3V0IDw8IGdldE51bWJlcigpIDw8IGVuZGw7Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzQ1NzIzLzEwMQ==