#include <array>
// to_array implementation taken from http://e...content-available-to-author-only...e.com/w/cpp/experimental/to_array
namespace detail {
template <class T, std::size_t N, std::size_t... I>
constexpr std::array<std::remove_cv_t<T>, N>
to_array_impl(T (&a)[N], std::index_sequence<I...>)
{
return { {a[I]...} };
}
}
template <class T, std::size_t N>
constexpr std::array<std::remove_cv_t<T>, N> to_array(T (&a)[N])
{
return detail::to_array_impl(a, std::make_index_sequence<N>{});
}
// End of to_array implementation
struct blah { };
template<std::size_t N>
constexpr auto foo(const blah(&arr)[N])
{
return to_array(arr);
}
int main()
{
auto res = foo({{}, {}});
return 0;
}
I2luY2x1ZGUgPGFycmF5PgoKLy8gdG9fYXJyYXkgaW1wbGVtZW50YXRpb24gdGFrZW4gZnJvbSBodHRwOi8vZS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5jb20vdy9jcHAvZXhwZXJpbWVudGFsL3RvX2FycmF5Cm5hbWVzcGFjZSBkZXRhaWwgewp0ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTiwgc3RkOjpzaXplX3QuLi4gST4KY29uc3RleHByIHN0ZDo6YXJyYXk8c3RkOjpyZW1vdmVfY3ZfdDxUPiwgTj4KICAgIHRvX2FycmF5X2ltcGwoVCAoJmEpW05dLCBzdGQ6OmluZGV4X3NlcXVlbmNlPEkuLi4+KQp7CiAgICByZXR1cm4geyB7YVtJXS4uLn0gfTsKfQp9CiAKdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+CmNvbnN0ZXhwciBzdGQ6OmFycmF5PHN0ZDo6cmVtb3ZlX2N2X3Q8VD4sIE4+IHRvX2FycmF5KFQgKCZhKVtOXSkKewogICAgcmV0dXJuIGRldGFpbDo6dG9fYXJyYXlfaW1wbChhLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8Tj57fSk7Cn0KLy8gRW5kIG9mIHRvX2FycmF5IGltcGxlbWVudGF0aW9uCgpzdHJ1Y3QgYmxhaCB7IH07Cgp0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOPgpjb25zdGV4cHIgYXV0byBmb28oY29uc3QgYmxhaCgmYXJyKVtOXSkKewoJcmV0dXJuIHRvX2FycmF5KGFycik7Cn0KCmludCBtYWluKCkKewoJYXV0byByZXMgPSBmb28oe3t9LCB7fX0pOwoJcmV0dXJuIDA7Cn0=