◐ Shell
clean mode source ↗

std::is_move_constructible, std::is_trivially_move_constructible, std::is_nothrow_move_constructible - 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.

Click here for the English version of this page

<metanoindex/>

<tbody> </tbody>

Elemento definito nell'header

<type_traits>

template< class T > struct is_move_constructible;

(1) (dal C++11)

template< class T > struct is_trivially_move_constructible;

(2) (dal C++11)

template< class T > struct is_nothrow_move_constructible;

(3) (dal C++11)

1)

Verifica se un tipo è MoveConstructible, cioè ha un costruttore accessibile mossa esplicita o implicita. Se la condizione è soddisfatta, un membro costante value true parità è previsto, in caso contrario è value false.

Original:

Checks whether a type is MoveConstructible, i.e. has an accessible explicit or implicit move constructor. If the requirement is met, a member constant value equal true is provided, otherwise value is false.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

2)

Uguale a 1), ma l'espressione di costruzione mossa non richiede qualsiasi operazione che non è banale.

Original:

Same as 1), but the move constructor expression does not call any operation that is not trivial.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

3)

Uguale a 1), ma l'espressione di costruzione mossa viene noexcept.

Original:

Same as 1), but the move constructor expression is noexcept.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Inherited from std::integral_constant

Member constants

true se T is move-constructible , false altrimenti

Original:

true if T is move-constructible , false otherwise

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(pubblico membro statico costante)

Member functions

converte l'oggetto in bool, restituisce value

Original:

converts the object to bool, returns value

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(metodo pubblico)

Member types

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
value_type bool
type std::integral_constant<bool, value>

Note

Spostare i costruttori di solito sono noexcept, in quanto altrimenti sono inutilizzabili in qualsiasi codice che fornisce garanzia forte eccezione.

Original:

Move constructors are usually noexcept, since otherwise they are unusable in any code that provides strong exception guarantee.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Possibile implementazione

template<class T>
struct is_move_constructible :
        std::is_constructible<T, typename std::add_rvalue_reference<T>::type> {};

template<class T>
struct is_trivially_move_constructible :
       std::is_trivially_constructible<T, typename std::add_rvalue_reference<T>::type> {};

template<class T>
struct is_nothrow_move_constructible :
       std::is_nothrow_constructible<T, typename std::add_rvalue_reference<T>::type> {};

Esempio

#include <iostream>
#include <type_traits>

struct Ex1 {
    std::string str; // member has a non-trivial but non-throwing move ctor
};
struct Ex2 {
    int n;
    Ex2(Ex2&&) = default; // trivial and non-throwing
};

int main() {
    std::cout << std::boolalpha << "Ex1 is move-constructible? "
              << std::is_move_constructible<Ex1>::value << '\n'
              << "Ex1 is trivially move-constructible? "
              << std::is_trivially_move_constructible<Ex1>::value << '\n'
              << "Ex1 is nothrow move-constructible? "
              << std::is_nothrow_move_constructible<Ex1>::value << '\n'
              << "Ex2 is trivially move-constructible? "
              << std::is_trivially_move_constructible<Ex2>::value << '\n'
              << "Ex2 is nothrow move-constructible? "
              << std::is_nothrow_move_constructible<Ex2>::value << '\n';
}

Output:

Ex1 is move-constructible? true
Ex1 is trivially move-constructible? false
Ex1 is nothrow move-constructible? true
Ex2 is trivially move-constructible? true
Ex2 is nothrow move-constructible? true

Vedi anche

Verifica se un tipo ha un costruttore per argomenti specifici

Original:

checks if a type has a constructor for specific arguments

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(classe template) [modifica]

Verifica se un tipo ha un costruttore di default

Original:

checks if a type has a default constructor

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(classe template) [modifica]

Verifica se un tipo ha un costruttore di copia

Original:

checks if a type has a copy constructor

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(classe template) [modifica]

ottiene un riferimento rvalue se il costruttore mossa non genera

Original:

obtains an rvalue reference if the move constructor does not throw

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) [modifica]