std::enable_if

Da cppreference.com.
< cpp‎ | types

 
 
Utilità libreria
Tipo di supporto (basic types, RTTI, type traits)
Gestione della memoria dinamica
La gestione degli errori
Programma di utilità
Funzioni variadic
Data e ora
Funzione oggetti
initializer_list(C++11)
bitset
hash(C++11)
Gli operatori relazionali
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>=
Coppie e tuple
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)
Swap, in avanti e spostare
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)
 
Tipo di supporto
Tipi base
Original:
Basic types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipi fondamentali
Larghezza fissa interi tipi(C++11)
Limiti numerici
Original:
Numeric limits
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
numeric_limits
C numerico limita interfaccia
Informazioni sul tipo di runtime
Original:
Runtime type information
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipo tratti
Original:
Type traits
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Categorie di tipo primario
Original:
Primary type categories
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_void(C++11)
is_array(C++11)
is_pointer(C++11)
is_enum(C++11)
is_union(C++11)
is_class(C++11)
is_function(C++11)
is_reference(C++11)
is_lvalue_reference(C++11)
is_rvalue_reference(C++11)
is_member_pointer(C++11)
is_member_object_pointer(C++11)
is_member_function_pointer(C++11)
Proprietà del tipo
Original:
Type properties
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_const(C++11)
is_volatile(C++11)
is_pod(C++11)
is_empty(C++11)
is_polymorphic(C++11)
is_abstract(C++11)
Operazioni supportate
Original:
Supported operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_constructible
is_trivially_constructible
is_nothrow_constructible
(C++11)
(C++11)
(C++11)
is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible
(C++11)
(C++11)
(C++11)
is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible
(C++11)
(C++11)
(C++11)
is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible
(C++11)
(C++11)
(C++11)
is_assignable
is_trivially_assignable
is_nothrow_assignable
(C++11)
(C++11)
(C++11)
is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable
(C++11)
(C++11)
(C++11)
is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable
(C++11)
(C++11)
(C++11)
is_destructible
is_trivially_destructible
is_nothrow_destructible
(C++11)
(C++11)
(C++11)
has_virtual_destructor(C++11)
I rapporti e le query di proprietà
Original:
Relationships and property queries
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_same(C++11)
is_base_of(C++11)
is_convertible(C++11)
alignment_of(C++11)
rank(C++11)
extent(C++11)
Tipo modifiche
Original:
Type modifications
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipo di trasformazioni
Original:
Type transformations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
aligned_storage(C++11)
aligned_union(C++11)
decay(C++11)
enable_if(C++11)
Digitare costanti tratto
Original:
Type trait constants
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
integral_constant(C++11)
 
Elemento definito nell'header <type_traits>
template<bool B, class T =void>
struct enable_if;
(dal C++11)
Se B è true, std::enable_if ha un type membro pubblico typedef, pari a T, altrimenti, non vi è nessun membro typedef.
Original:
If B is true, std::enable_if has a public member typedef type, equal to T; otherwise, there is no member typedef.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Questo MetaFunction viene utilizzato per rimuovere in modo condizionale funzioni e le classi di risoluzione sovraccarico sulla base di caratteri morfologici e per fornire overload della funzione separati e specializzazioni per i tratti di tipo diverso. std::enable_if può essere usato come un argomento di funzione aggiuntiva (non applicabile ai overload dell'operatore), come un tipo di ritorno (non applicabile ai costruttori e distruttori), o come un modello di classe o un modello di parametro di funzione.
Original:
This metafunction is used to conditionally remove functions and classes from overload resolution based on type traits and to provide separate function overloads and specializations for different type traits. std::enable_if can be used as an additional function argument (not applicable to operator overloads), as a return type (not applicable to constructors and destructors), or as a class template or function template parameter.
The text has been machine-translated via Google Translate.
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
type
T sia o no tale membro, a seconda del valore di B
Original:
either T or no such member, depending on the value of B
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifica]Possibile implementazione

template<bool B, class T =void>struct enable_if {};   template<class T>struct enable_if<true, T>{typedef T type;};

[modifica]Esempio

#include <type_traits>#include <iostream>   // foo1 overloads are enabled via the return typetemplate<class T>typename std::enable_if<std::is_floating_point<T>::value, T>::type foo1(T t){std::cout<<"foo1: float\n";return t;}   template<class T>typename std::enable_if<std::is_integral<T>::value, T>::type foo1(T t){std::cout<<"foo1: int\n";return t;}   // foo2 overload is enabled via a parametertemplate<class T> T foo2(T t, typename std::enable_if<std::is_integral<T>::value>::type*=0){return t;}   // foo3 overload is enabled via a template parametertemplate<class T , class=typename std::enable_if<std::is_integral<T>::value>::type> T foo3(T t)// note, function signature is unmodified{return t;}   // A is enabled via a template parametertemplate<class T, class Enable =void>class A;// undefined   template<class T>class A<T, typename std::enable_if<std::is_floating_point<T>::value>::type>{};   int main(){ foo1(1.2);// OK, calls the first version of foo1() foo1(10);// OK, calls the second version of foo1()   // foo2(0.1); // compile-time error foo2(7);// OK   // A<int> a1; // compile-time error A<double> a1;// OK}

Output:

foo1: float foo1: int

[modifica]Vedi anche

close