#include <iostream>
int f(const int i)
{
return i;
}
int main()
{
/* When constants allocate memory? */
const int c1 = 1; // no memory needed
const int c2 = 2; // need memory
const int c3 = f(3); // need memory
const int *p = &c2;
int t1[c1];
int t2[c2];
// prog.cpp:18:12: warning: ISO C++ forbids variable length array 't3'
int t3[c3];
int i; std::cin >> i;
switch(i)
{
case c1: std::cout << "c1"; break;
case c2: std::cout << "c2"; break;
// prog.cpp:25:10: error: 'c3' cannot appear in a constant-expression
case c3: std::cout << "c3"; break;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IGYoY29uc3QgaW50IGkpCnsKICByZXR1cm4gaTsKfQoKaW50IG1haW4oKQp7CiAgLyogV2hlbiBjb25zdGFudHMgYWxsb2NhdGUgbWVtb3J5PyAqLwogIGNvbnN0IGludCBjMSA9IDE7ICAgIC8vIG5vIG1lbW9yeSBuZWVkZWQKICBjb25zdCBpbnQgYzIgPSAyOyAgICAvLyBuZWVkIG1lbW9yeSAgIAogIGNvbnN0IGludCBjMyA9IGYoMyk7IC8vIG5lZWQgbWVtb3J5CiAgY29uc3QgaW50ICpwID0gJmMyOwoKICBpbnQgdDFbYzFdOwogIGludCB0MltjMl07CiAgLy8gcHJvZy5jcHA6MTg6MTI6IHdhcm5pbmc6IElTTyBDKysgZm9yYmlkcyB2YXJpYWJsZSBsZW5ndGggYXJyYXkgJ3QzJwogIGludCB0M1tjM107CgogIGludCBpOyBzdGQ6OmNpbiA+PiBpOwogIHN3aXRjaChpKQogIHsKICAgIGNhc2UgYzE6IHN0ZDo6Y291dCA8PCAiYzEiOyBicmVhazsKICAgIGNhc2UgYzI6IHN0ZDo6Y291dCA8PCAiYzIiOyBicmVhazsKICAgIC8vIHByb2cuY3BwOjI1OjEwOiBlcnJvcjogJ2MzJyBjYW5ub3QgYXBwZWFyIGluIGEgY29uc3RhbnQtZXhwcmVzc2lvbgogICAgY2FzZSBjMzogc3RkOjpjb3V0IDw8ICJjMyI7IGJyZWFrOwogIH0KICByZXR1cm4gMDsKfQ==