Espacios de nombres
Variantes
Acciones

std::pointer_traits

De cppreference.com
< cpp‎ | memory

 
 
Utilidades de la biblioteca
Escriba apoyo (basic types, RTTI, type traits)
Gestión de memoria dinámica
Gestión de errores
Programa de servicios públicos
Funciones variadic
Fecha y hora
Objetos Function
initializer_list(C++11)
bitset
hash(C++11)
Operadores relacionales
Original:
Relational operators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
rel_ops::operator!=
rel_ops::operator>
rel_ops::operator<=
rel_ops::operator>=
Pares y tuplas
Original:
Pairs and tuples
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
pair
tuple(C++11)
piecewise_construct_t(C++11)
piecewise_construct(C++11)
Cambiar, hacia adelante y mover
Original:
Swap, forward and move
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
swap
forward(C++11)
move(C++11)
move_if_noexcept(C++11)
declval(C++11)
 
Gestión de memoria dinámica
Bajo la gestión de memoria de nivel
Los asignadores
Original:
Allocators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
allocator
allocator_traits(C++11)
allocator_arg_t(C++11)
allocator_arg(C++11)
uses_allocator(C++11)
scoped_allocator_adaptor(C++11)
Inicializar el almacenamiento
Original:
Uninitialized storage
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
uninitialized_copy
uninitialized_copy_n(C++11)
uninitialized_fill
uninitialized_fill_n
raw_storage_iterator
get_temporary_buffer
return_temporary_buffer
Punteros inteligentes
Original:
Smart pointers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
unique_ptr(C++11)
shared_ptr(C++11)
weak_ptr(C++11)
auto_ptr(obsoleto)
owner_less(C++11)
enable_shared_from_this(C++11)
bad_weak_ptr(C++11)
default_delete(C++11)
Garbage soporte colección
Original:
Garbage collection support
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
declare_reachable(C++11)
undeclare_reachable(C++11)
declare_no_pointers(C++11)
undeclare_no_pointers(C++11)
pointer_safety(C++11)
get_pointer_safety(C++11)
Varios
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
pointer_traits(C++11)
addressof(C++11)
align(C++11)
C Library
Original:
C Library
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
 
Defined in header <memory>
template< class Ptr > struct pointer_traits;
(1) (desde C++11)
template< class T > struct pointer_traits<T*>;
(2) (desde C++11)
La plantilla de clase pointer_traits proporciona la forma estándar de acceder a ciertas propiedades de tipos como puntero. El std::allocator_traits plantilla estándar se basa en pointer_traits para determinar los valores por defecto para varios typedefs requiere por 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)
El pointer_traits no especializado declara los siguientes tipos:
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.

Contenido

[editar] Tipos de miembros

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 si está presente. De lo contrario, si T Ptr es un Template<T, Args...> de instancias de plantilla
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 si está presente, de lo contrario 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.

[editar] Alias ​​miembros plantillas

Plantilla
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> si existe, de lo contrario si Tempate<U, Args...> Ptr es un Template<T, Args...> de instancias de plantilla
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.

[editar] Las funciones miembro

[estático]
obtiene un puntero dereferencable a su argumento
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.

(miembro estático público función)
2)
Una especialización se proporcionan para los tipos de puntero, T*, que declara los siguientes tipos
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.

[editar] Tipos de miembros

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

[editar] Alias ​​miembros plantillas

Plantilla
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*

[editar] Las funciones miembro

[estático]
obtiene un puntero dereferencable a su argumento}
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.

(miembro estático público función)

[editar] Notas

El alias de miembros de la plantilla REBIND permite, dado un tipo de puntero de tipo T que apunta, para obtener el mismo puntero como tipo que apunta a U. Por ejemplo,
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>> :: revinculación <double>, std :: unique_ptr <double>> :: valor), "")
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.

[editar] Ejemplo

#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​

[editar] Ver también

proporciona información sobre los tipos de asignador
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.

(clase de plantilla) [edit]
(C++11)
Obtiene la dirección real de un objeto, incluso si el operador &' está sobrecargado
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.

(función de plantilla) [edit]