Freigeben über


scoped_allocator_adaptor::construct-Methode

Erstellt ein Objekt.

template<class Ty, class... Atypes>
    void construct(Ty *ptr, Atypes&&... args);
template<class Ty1, class Ty2, class... Atypes1, class... Atypes2>
    void construct(pair<Ty1, Ty2> *ptr, piecewise_construct_t,
        tuple<Atypes1&&...> first, tuple<Atypes1&&...> second);
template<class Ty1, class Ty2>
    void construct(pair<Ty1, Ty2> *ptr);
template<class Ty1, class Ty2, class Uy1, class Uy2>
    void construct(pair<Ty1, Ty2> *ptr,
        class Uy1&& first, class Uy2&& second);
template<class Ty1, class Ty2, class Uy1, class Uy2>
    void construct(pair<Ty1, Ty2> *ptr, const pair<Uy1, Uy2>& right);
template<class Ty1, class Ty2, class Uy1, class Uy2>
    void construct(pair<Ty1, Ty2> *ptr, pair<Uy1, Uy2>&& right);

Parameter

  • ptr
    Ein Zeiger auf die Speicheradresse, an der das Objekt erstellt werden soll.

  • args
    Eine Liste der Argumente.

  • first
    Ein Objekt vom ersten Typ ein Paar ein.

  • second
    Ein Objekt des zweiten Typ ein Paar ein.

  • right
    Ein vorhandenes verschoben werden oder kopiert wurde Objekt.

Hinweise

Die erste Methode erstellt das Objekt bei ptr misst, indem Outermost_traits::construct(OUTERMOST(*this), ptr, xargs...) aufgerufen wird, in dem xargs... Folgendes ist.

  • Wenn uses_allocator<Ty, inner_allocator_type> false enthält, dann ist xargs...args...

  • Wenn uses_allocator<Ty, inner_allocator_type> true und beinhaltet is_constructible<Ty, allocator_arg_t, inner_allocator_type, args...> beinhaltet true, dann xargs...allocator_arg, inner_allocator(), args... ist.

  • Wenn uses_allocator<Ty, inner_allocator_type> true und beinhaltet is_constructible<Ty, args..., inner_allocator()> beinhaltet true, dann xargs...args..., inner_allocator() ist.

Die zweite Methode erstellt die beiden Objekt bei ptr, mit Outermost_traits::construct(OUTERMOST(*this), &ptr->first, xargs...), wobei xargs...first... ist, das wie in der obigen Liste geändert wird, und Outermost_traits::construct(OUTERMOST(*this), &ptr->second, xargs...) aufruft, in dem xargs...second... ist, das wie in der obigen Liste ändert.

Die dritte Methode verhält sich genau wie this->construct(ptr, piecewise_construct, tuple<>, tuple<>).

Die vierte Methode verhält sich genau wie this->construct(ptr, piecewise_construct, forward_as_tuple(std::forward<Uy1>(first), forward_as_tuple(std::forward<Uy2>(second)).

Die fünfte Methode verhält sich genau wie this->construct(ptr, piecewise_construct, forward_as_tuple(right.first), forward_as_tuple(right.second)).

Die 6. Methode verhält sich genau wie this->construct(ptr, piecewise_construct, forward_as_tuple(std::forward<Uy1>(right.first), forward_as_tuple(std::forward<Uy2>(right.second)).

Anforderungen

Header: <scoped_allocator>

Namespace: std

Siehe auch

Referenz

scoped_allocator_adaptor-Klasse

allocator_traits::construct-Methode