◐ Shell
clean mode source ↗

std::is_move_constructible, std::is_trivially_move_constructible, std::is_nothrow_move_constructible - cppreference.com

De cppreference.com

<metanoindex/>

<tbody> </tbody>

Definido no cabeçalho

<type_traits>

template< class T > struct is_move_constructible;

(1) (desde C++11)

template< class T > struct is_trivially_move_constructible;

(2) (desde C++11)

template< class T > struct is_nothrow_move_constructible;

(3) (desde C++11)

1)

Verifica se um tipo é MoveConstructible, ou seja, tem um construtor movimento acessível explícita ou implícita. Se a exigência for atendida, um membro constante value true igual é fornecida, caso contrário, é 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)

Mesmo que 1), mas a expressão construtor movimento não põe qualquer operação que não é trivial.

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)

Mesmo que 1), mas a expressão construtor movimento é 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.

Herdado de std::integral_constant

Member constants

true se T is move-constructible , false contrário

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.


(membro estático público constante)

Member functions

converte o objeto em bool, retorna 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.


(função pública membro)

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>

Notas

Mover construtores são geralmente noexcept, pois caso contrário, eles não são utilizáveis ​​em qualquer código que fornece garantia exceção forte.

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.

Possível implementação

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> {};

Exemplo

#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';
}

Saída:

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

Veja também

verifica se um tipo tem um construtor para argumentos específicos

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.


(modelo de classe) [edit]

verifica se um tipo tem um construtor padrão

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.


(modelo de classe) [edit]

verifica se um tipo tem um construtor de cópia

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.


(modelo de classe) [edit]

obtém uma referência rvalue se o construtor movimento não joga

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.


(modelo de função) [edit]