#include <array>
#include <iostream>
#include <type_traits>
using namespace std;
template <typename... T>
constexpr auto make_array(T&&... values) {
using value_type = std::decay_t<std::common_type_t<T...>>;
return std::array<value_type, sizeof...(T)>{std::forward<T>(values)...};
}
int main() {
auto a = make_array( 1, 2, 3, 4 );
for ( auto i : a )
std::cout << i << std::endl;
return 0;
}
I2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgpjb25zdGV4cHIgYXV0byBtYWtlX2FycmF5KFQmJi4uLiB2YWx1ZXMpIHsKICB1c2luZyB2YWx1ZV90eXBlID0gc3RkOjpkZWNheV90PHN0ZDo6Y29tbW9uX3R5cGVfdDxULi4uPj47CiAgcmV0dXJuIHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgc2l6ZW9mLi4uKFQpPntzdGQ6OmZvcndhcmQ8VD4odmFsdWVzKS4uLn07Cn0KICAgICAgIAppbnQgbWFpbigpIHsKCWF1dG8gYSA9IG1ha2VfYXJyYXkoIDEsIDIsIDMsIDQgKTsKCWZvciAoIGF1dG8gaSA6IGEgKQoJCXN0ZDo6Y291dCA8PCBpIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9