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> |
||
|
|
(1) | (desde C++11) |
|
|
(2) | (desde C++11) |
|
|
(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
Original:
The text has been machine-translated via Google Translate. (membro estático público constante) | |
Member functions
converte o objeto em Original: converts the object to The text has been machine-translated via Google Translate. (função pública membro) | |
Member types
Tipo Original: Type The text has been machine-translated via Google Translate. |
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
(C++11) |
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. (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. (modelo de classe) [edit] | |
(C++11) |
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. (modelo de classe) [edit] |
(C++11) |
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. (modelo de função) [edit] |