#include <functional>
#include <vector>
#include <iostream>
#define DEVICE_A 0
#define DEVICE_B 1
//..
#define DEVICE_N 50
#define COMPANY_A 0
#define COMPANY_B 1
#define COMPANY_C 2
#define COMPANY_D 2
//..
#define COMPANY_N 50
int main ()
{
int giCompany_1 = COMPANY_B;
int giCompany_2 = COMPANY_D;
int giDevice = DEVICE_A;
int randomValue_1 = 5;
int randomValue_2 = 7;
std::vector<std::pair<std::function<bool()>, std::function<void()>>> operations =
{
{
[=] {return giCompany_1 == COMPANY_A || giCompany_1 == COMPANY_B || giCompany_1 != COMPANY_C && giDevice == DEVICE_A;},
[&] {std::cout << "First case " << randomValue_1 << '\n';}
},
{
[=] {return giCompany_2 == COMPANY_D;},
[&] {std::cout << "Second case " << randomValue_2 << '\n';}
},
};
for (auto const& pair: operations)
{
if (pair.first ())
{
pair.second ();
}
}
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCiNkZWZpbmUgREVWSUNFX0EgMAojZGVmaW5lIERFVklDRV9CIDEKLy8uLgojZGVmaW5lIERFVklDRV9OIDUwCgojZGVmaW5lIENPTVBBTllfQSAwCiNkZWZpbmUgQ09NUEFOWV9CIDEKI2RlZmluZSBDT01QQU5ZX0MgMgojZGVmaW5lIENPTVBBTllfRCAyCi8vLi4KI2RlZmluZSBDT01QQU5ZX04gNTAKCmludCBtYWluICgpCgl7CglpbnQgZ2lDb21wYW55XzEgPSBDT01QQU5ZX0I7CglpbnQgZ2lDb21wYW55XzIgPSBDT01QQU5ZX0Q7CglpbnQgZ2lEZXZpY2UgPSBERVZJQ0VfQTsKCWludCByYW5kb21WYWx1ZV8xID0gNTsKCWludCByYW5kb21WYWx1ZV8yID0gNzsKCXN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OmZ1bmN0aW9uPGJvb2woKT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IG9wZXJhdGlvbnMgPQoJCXsKCQkJewoJCQlbPV0ge3JldHVybiBnaUNvbXBhbnlfMSA9PSBDT01QQU5ZX0EgfHwgZ2lDb21wYW55XzEgPT0gQ09NUEFOWV9CIHx8IGdpQ29tcGFueV8xICE9IENPTVBBTllfQyAmJiBnaURldmljZSA9PSBERVZJQ0VfQTt9LAoJCSAJWyZdIHtzdGQ6OmNvdXQgPDwgIkZpcnN0IGNhc2UgIiA8PCByYW5kb21WYWx1ZV8xIDw8ICdcbic7fQoJCSAJfSwKCQkgCXsKCQkJWz1dIHtyZXR1cm4gZ2lDb21wYW55XzIgPT0gQ09NUEFOWV9EO30sCgkJIAlbJl0ge3N0ZDo6Y291dCA8PCAiU2Vjb25kIGNhc2UgIiA8PCByYW5kb21WYWx1ZV8yIDw8ICdcbic7fQoJCSAJfSwKCQl9OwoJCQoJZm9yIChhdXRvIGNvbnN0JiBwYWlyOiBvcGVyYXRpb25zKQoJCXsKCQlpZiAocGFpci5maXJzdCAoKSkKCQkJewoJCQlwYWlyLnNlY29uZCAoKTsKCQkJfQoJCX0KCX0=