Digamos que usted tiene un C++ 0x miembro de std :: matriz de una clase de plantilla y desea inicializar por medio de un constructor que toma un par de iteradores:En la inicialización de std :: gama
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;
};
Suponiendo que está proporcionando un rango congruente con el tamaño de su almacenamiento, ¿es posible inicializar std :: array en el inicializador del constructor, evitando los constructores superfluos predeterminados de Tps en el almacenamiento? ¿Es posible explotar std :: initializer_list <> en este caso?
Por cierto, se reserva un identificador que comienza con un guion bajo y que está seguido de una letra mayúscula. Además, debe ser 'std :: distance (first, last)'. – GManNickG
Supervisión fija. El problema con los constructores predeterminados adicionales sigue siendo ... –