std::pointer_traits - cppreference.com
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. |
<metanoindex/>
<tbody> </tbody>
| Elemento definito nell'header <memory> |
||
|
|
(1) | (dal C++11) |
|
|
(2) | (dal C++11) |
Il modello di classe 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.
1)
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.
Membri tipi
Tipo Original: Type The text has been machine-translated via Google Translate. |
Definition |
pointer
|
Ptr
|
element_type
|
Original:
The text has been machine-translated via Google Translate. |
difference_type
|
Original:
The text has been machine-translated via Google Translate. |
Membri alias modelli
Template Original: Template The text has been machine-translated via Google Translate. |
Definition |
| template <class U> using rebind |
Original:
The text has been machine-translated via Google Translate. |
Membri funzioni
ottiene un puntatore dereferencable al suo argomento Original: obtains a dereferencable pointer to its argument The text has been machine-translated via Google Translate. (metodo pubblico statico) | |
2)
Una specializzazione è previsto per i tipi di puntatore, T*, che dichiara i seguenti tipi
Original:
A specialization is provided for pointer types, T*, which 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.
Membri tipi
Tipo Original: Type The text has been machine-translated via Google Translate. |
Definition |
pointer
|
T*
|
element_type
|
T
|
difference_type
|
std::ptrdiff_t |
Membri alias modelli
Template Original: Template The text has been machine-translated via Google Translate. |
Definition |
| template< class U > using rebind | U*
|
Membri funzioni
ottiene un puntatore dereferencable al suo argomento} Original: obtains a dereferencable pointer to its argument} The text has been machine-translated via Google Translate. (metodo pubblico statico) | |
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.
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.
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:
Vedi anche
fornisce informazioni sui tipi di allocatore Original: provides information about allocator types The text has been machine-translated via Google Translate. (classe template) [modifica] | |
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. (funzione di modello) [modifica] | |