【发布时间】:2016-05-31 01:08:51
【问题描述】:
我需要将参数传递给看起来像这样的最小示例的包装类:
template<class TStack, unsigned int TBins>
class Wrapper : Stack<......>
{
std::array<TStack, TBins> m_oStacks;
template<typename ... Args>
Wrapper(std::initializer_list<const unsigned int> const& size, Args&&... args)
: Stack<.......>(args), m_oStacks{5,2,3,4,5,6,7,8,9,10}
//, m_oStacks(size) //,m_oStacks{size} //,m_oStacks{{size}}
{
//m_oStacks = { size };
}
};
我尝试使用 initializer_list 大小初始化数组,但没有任何效果(源代码的注释部分)只有常量 {5,2,3,4,5,6,7,8,9,10} 部分有效
有人知道原因和解决办法吗?
真诚的 马蒂罗
编辑 1:主要问题是 TStack(在大多数情况下)没有默认构造函数,所以我需要在构造时初始化数组
【问题讨论】:
-
@Matyro 类 std::array 没有接受 initializer_list 的构造函数。您应该自己将 initializer_list 复制到数组中。
-
使用
std::array<TStack, TBins>而不是std::initializer_list<const unsigned int>,它也可以被列表初始化,并且std::array本身确实有一个复制构造函数 -
该解决方案运行良好,谢谢
标签: c++ arrays c++11 initializer-list