假设您有一个模板类的 c++0x 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<> ?