std::pointer_traits
Da cppreference.com.
![]() |
Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate.
La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Elemento definito nell'header <memory>
|
||
template< class Ptr > struct pointer_traits; |
(1) | (dal C++11) |
template< class T > struct pointer_traits<T*>; |
(2) | (dal C++11) |
Il modello di classe
1) pointer_traits
fornisce il modo standard per accedere alle proprietà di alcuni tipi di puntatore di tipo. Il std::allocator_traits modello standard si basa su pointer_traits
per determinare le impostazioni predefinite per diversi typedef richiede da Allocator
.Original:
The
pointer_traits
class template provides the standardized way to access certain properties of pointer-like types. The standard template std::allocator_traits relies on pointer_traits
to determine the defaults for various typedefs requires by Allocator
.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Il non specializzato
pointer_traits
dichiara i seguenti tipi:Original:
The non-specialized
pointer_traits
declares the following types:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Indice |
[modifica] Membri tipi
Tipo
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
pointer
|
Ptr |
element_type
|
Ptr::element_type se presente. In caso contrario, se
T Ptr è un Template<T, Args...> istanziazione di template Original: Ptr::element_type if present. Otherwise T if Ptr is a template instantiation Template<T, Args...> The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
difference_type
|
Ptr::difference_type se presente, altrimenti std::ptrdiff_t
Original: Ptr::difference_type if present, otherwise std::ptrdiff_t The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[modifica] Membri alias modelli
Template
Original: Template The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
template <class U> using rebind | Ptr::rebind<U> se esiste, altrimenti se Tempate<U, Args...>
Ptr è un Template<T, Args...> istanziazione di template Original: Ptr::rebind<U> if exists, otherwise Tempate<U, Args...> if Ptr is a template instantiation Template<T, Args...> The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[modifica] Membri funzioni
[statico] |
ottiene un puntatore dereferencable al suo argomento Original: obtains a dereferencable pointer to its argument The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico statico) |
Una specializzazione è previsto per i tipi di puntatore,
T*
, che dichiara i seguenti tipiOriginal:
A specialization is provided for pointer types,
T*
, which declares the following typesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Membri tipi
Tipo
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
pointer
|
T* |
element_type
|
T |
difference_type
|
std::ptrdiff_t |
[modifica] Membri alias modelli
Template
Original: Template The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
template< class U > using rebind | U* |
[modifica] Membri funzioni
[statico] |
ottiene un puntatore dereferencable al suo argomento} Original: obtains a dereferencable pointer to its argument} The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico statico) |
[modifica] Note
Le riassociare alias modello utente permette, dato un puntatore come tipo che punta a T, per ottenere lo stesso puntatore come tipo che punta a U. Per esempio,
Original:
The rebind member template alias makes it possible, given a pointer-like type that points to T, to obtain the same pointer-like type that points to U. For example,
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
std :: is_same <std :: pointer_traits <std :: shared_ptr <int>> :: Rebind <double>, std :: unique_ptr <double>> :: valore), "")
Original:
std::is_same<std::pointer_traits< std::shared_ptr<int>>::rebind<double>, std::unique_ptr<double> >::value), "")
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Esempio
#include <memory> #include <iostream> template <class Ptr> struct BlockList { // Predefine a memory block struct block; // Define a pointer to a memory block from the kind of pointer Ptr s // If Ptr is any kind of T*, block_ptr_t is block* // If Ptr is smart_ptr<T>, block_ptr_t is smart_ptr<block> typedef typename std::pointer_traits<Ptr>::template rebind<block> block_ptr_t; struct block { std::size_t size; block_ptr_t next_block; }; block_ptr_t free_blocks; }; int main() { BlockList<int*> bl1; // The type of bl1.free_blocks is block* BlockList<std::shared_ptr<char>> bl2; // The type of bl2.free_blocks is std::shared_ptr<block> std::cout << bl2.free_blocks.use_count() << '\n'; }
Output:
0
[modifica] Vedi anche
(C++11) |
fornisce informazioni sui tipi di allocatore Original: provides information about allocator types The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (classe template) |
(C++11) |
ottiene l'indirizzo reale di un oggetto, anche se l'operatore &' è sovraccarico Original: obtains actual address of an object, even if the & operator is overloaded The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione di modello) |