テンプレート クラスの 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<> を悪用することは可能ですか?