8
假设你有一个模板类的C++ 0x std :: array成员,并且想通过一个需要几个迭代器的构造函数初始化它:在初始化std :: array
template <typename Tp, size_t N>
class Test
{
public:
template <typename Iterator>
Test(Iterator first, Iterator last)
{
if (std::distance(first,last) > N)
throw std::runtime_error("bad range");
std::copy(first, last, _M_storage.begin());
}
private:
std::array<Tp, N> _M_storage;
};
假设您提供的存储空间大小一致,是否可以在构造函数初始化程序中初始化std :: array,避免存储中Tps的默认超级构造函数?在这种情况下是否有可能利用std :: initializer_list <>?
顺便说一下,保留一个以下划线开头,后面跟着大写字母的标识符。另外,它应该是'std :: distance(first,last)'。 – GManNickG 2010-07-22 17:49:26
监督固定。额外的默认构造函数的问题仍然存在... – 2010-07-22 18:07:12