#include <utility>
#include <array>
#include <cstddef>
#include <iostream>
template<class T, std::size_t N> struct ArrayWrapper
{
std::array<T,N> arr;
ArrayWrapper(T &&... init) : arr{{std::forward<T>(init)...}} {}
}
int main()
{
ArrayWrapper<int, 4> aw{{1,2,3,4}};
std::cout << aw.arr[2] << '\n';
}
I2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxhcnJheT4KI2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+IHN0cnVjdCBBcnJheVdyYXBwZXIKewoJc3RkOjphcnJheTxULE4+IGFycjsKCUFycmF5V3JhcHBlcihUICYmLi4uIGluaXQpIDogYXJye3tzdGQ6OmZvcndhcmQ8VD4oaW5pdCkuLi59fSB7fQp9CgppbnQgbWFpbigpCnsKICAgQXJyYXlXcmFwcGVyPGludCwgND4gYXd7ezEsMiwzLDR9fTsKICAgc3RkOjpjb3V0IDw8IGF3LmFyclsyXSA8PCAnXG4nOwp9Cg==
prog.cpp:9:23: error: expansion pattern 'T&&' contains no argument packs
ArrayWrapper(T &&... init) : arr{{std::forward<T>(init)...}} {}
^
prog.cpp:10:1: error: expected ';' after struct definition
}
^
prog.cpp: In constructor 'ArrayWrapper<T, N>::ArrayWrapper()':
prog.cpp:9:52: error: 'init' was not declared in this scope
ArrayWrapper(T &&... init) : arr{{std::forward<T>(init)...}} {}
^
prog.cpp:9:57: error: expansion pattern 'forward<T>(<expression error>)' contains no argument packs
ArrayWrapper(T &&... init) : arr{{std::forward<T>(init)...}} {}
^
prog.cpp: In function 'int main()':
prog.cpp:14:37: error: no matching function for call to 'ArrayWrapper<int, 4u>::ArrayWrapper(<brace-enclosed initializer list>)'
ArrayWrapper<int, 4> aw{{1,2,3,4}};
^
prog.cpp:9:2: note: candidate: ArrayWrapper<T, N>::ArrayWrapper() [with T = int; unsigned int N = 4u]
ArrayWrapper(T &&... init) : arr{{std::forward<T>(init)...}} {}
^
prog.cpp:9:2: note: candidate expects 0 arguments, 1 provided
prog.cpp:6:41: note: candidate: constexpr ArrayWrapper<int, 4u>::ArrayWrapper(const ArrayWrapper<int, 4u>&)
template<class T, std::size_t N> struct ArrayWrapper
^
prog.cpp:6:41: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const ArrayWrapper<int, 4u>&'
prog.cpp:6:41: note: candidate: constexpr ArrayWrapper<int, 4u>::ArrayWrapper(ArrayWrapper<int, 4u>&&)
prog.cpp:6:41: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'ArrayWrapper<int, 4u>&&'