#include <iostream>
template<typename T, T const array[], int I>
struct Indexer
{
static const T value = array[I];
};
constexpr int foo[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
enum Bar
{
value1 = Indexer<int, foo, 1>::value,
value3 = Indexer<int, foo, 3>::value,
value7 = Indexer<int, foo, 7>::value,
};
int main()
{
std::cout << Bar::value3 << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCBjb25zdCBhcnJheVtdLCBpbnQgST4Kc3RydWN0IEluZGV4ZXIKewogIHN0YXRpYyBjb25zdCBUIHZhbHVlID0gYXJyYXlbSV07Cn07Cgpjb25zdGV4cHIgaW50IGZvb1tdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5fTsKCmVudW0gQmFyCnsKICB2YWx1ZTEgPSBJbmRleGVyPGludCwgZm9vLCAxPjo6dmFsdWUsIAogIHZhbHVlMyA9IEluZGV4ZXI8aW50LCBmb28sIDM+Ojp2YWx1ZSwgCiAgdmFsdWU3ID0gSW5kZXhlcjxpbnQsIGZvbywgNz46OnZhbHVlLCAKfTsKCmludCBtYWluKCkKewogICBzdGQ6OmNvdXQgPDwgQmFyOjp2YWx1ZTMgPDwgc3RkOjplbmRsOwp9