#include <array>
// Assume this comes from some included file
constexpr size_t elementCount = 5;
template<class first, class ... T>
std::array<first, 1 + sizeof...(T)> makeArray(first e1, T ... rest) {
static_assert(1 + sizeof...(T) == elementCount, "Must match elementCount");
return { std::forward<first>(e1), std::forward<T>(rest) ...};
}
int main() {
// This works.
const auto lookup = makeArray(2, 4, 6, 8, 10);
// This doesn't. :-)
//const auto lookup2 = makeArray(2, 4, 6);
}
I2luY2x1ZGUgPGFycmF5PgoKLy8gQXNzdW1lIHRoaXMgY29tZXMgZnJvbSBzb21lIGluY2x1ZGVkIGZpbGUKY29uc3RleHByIHNpemVfdCBlbGVtZW50Q291bnQgPSA1OwoKdGVtcGxhdGU8Y2xhc3MgZmlyc3QsIGNsYXNzIC4uLiBUPgpzdGQ6OmFycmF5PGZpcnN0LCAxICsgc2l6ZW9mLi4uKFQpPiBtYWtlQXJyYXkoZmlyc3QgZTEsIFQgLi4uIHJlc3QpIHsKCXN0YXRpY19hc3NlcnQoMSArIHNpemVvZi4uLihUKSA9PSBlbGVtZW50Q291bnQsICJNdXN0IG1hdGNoIGVsZW1lbnRDb3VudCIpOwogICAgcmV0dXJuIHsgIHN0ZDo6Zm9yd2FyZDxmaXJzdD4oZTEpLCBzdGQ6OmZvcndhcmQ8VD4ocmVzdCkgLi4ufTsKfQoKaW50IG1haW4oKSB7CiAgICAvLyBUaGlzIHdvcmtzLgogICAgY29uc3QgYXV0byBsb29rdXAgPSBtYWtlQXJyYXkoMiwgNCwgNiwgOCwgMTApOwoKICAgIC8vIFRoaXMgZG9lc24ndC4gOi0pCiAgICAvL2NvbnN0IGF1dG8gbG9va3VwMiA9IG1ha2VBcnJheSgyLCA0LCA2KTsKfQ==