是否可以将确切的braced-init-list传递给std::array
的构造函数?这可能是必要的,因为std::array
不支持初始化列表分配。
尝试调整此问题的已接受答案:How to construct std::array object with initializer list?(答案缩短链接:https://stackoverflow.com/a/6894191/4385532)我的问题,我想出了以下“解决方案”来解决通过问题的问题 - init-list到std::array
的构造函数:
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';
}
然而,我失败了。这不会编译:http://ideone.com/VJVU1X
我不确定我的错误是什么。我希望这一行
ArrayWrapper(T &&... init) : arr{{std::forward<T>(init)...}} {}
将捕获传递给ArrayWrapper
的构造函数的braced-init-list的确切元素,并将它们转发给std::array
的构造函数。
我怎么理解不到?