#include <iostream>
#include <array>
struct Foo {
int i;
static const std::array<Foo, 2> A;
};
constexpr std::array<Foo, 2> Foo::A {{{1}, {2}}};
template<int N>
int foo() { return N; }
int main(int, char**)
{
std::cout << "Foo::A[0]: " << foo<Foo::A[0U].i>() << "\n"
<< "Foo::A[1]: " << foo<Foo::A[1U].i>();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CgpzdHJ1Y3QgRm9vIHsKICBpbnQgaTsKICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTxGb28sIDI+IEE7Cn07Cgpjb25zdGV4cHIgc3RkOjphcnJheTxGb28sIDI+IEZvbzo6QSB7e3sxfSwgezJ9fX07Cgp0ZW1wbGF0ZTxpbnQgTj4KaW50IGZvbygpIHsgcmV0dXJuIE47IH0KCmludCBtYWluKGludCwgY2hhcioqKQp7CglzdGQ6OmNvdXQgPDwgIkZvbzo6QVswXTogIiA8PCBmb288Rm9vOjpBWzBVXS5pPigpIDw8ICJcbiIKCQk8PCAiRm9vOjpBWzFdOiAiIDw8IGZvbzxGb286OkFbMVVdLmk+KCk7CglyZXR1cm4gMDsKfQ==