
- C++ Library - Home
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- The C++ STL Library
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- The C++ Advanced Library
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ Utility Library - move_if_noexcept Function
Description
It returns an rvalue reference to arg, unless copying is a better option than moving to provide at least a strong exception guarantee.
Declaration
Following is the declaration for std::move_if_noexcept function.
templatetypename conditional < is_nothrow_move_constructible ::value || !is_copy_constructible ::value, T&&, const T& >::type move_if_noexcept(T& arg) noexcept;
C++11
templatetypename conditional < is_nothrow_move_constructible ::value || !is_copy_constructible ::value, T&&, const T& >::type move_if_noexcept(T& arg) noexcept;
Parameters
arg − It is an object.
Return Value
It returns an rvalue reference to arg, unless copying is a better option than moving to provide at least a strong exception guarantee.
Exceptions
Basic guarantee − This function never throws exceptions.
Data races
Calling this function introduces no data races.
Example
In below example explains about std::move_if_noexcept function.
#include#include struct Bad { Bad() {} Bad(Bad&&) { std::cout << "Throwing move constructor called\n"; } Bad(const Bad&) { std::cout << "Throwing copy constructor called\n"; } }; struct Good { Good() {} Good(Good&&) noexcept { std::cout << "Non-throwing move constructor called\n"; } Good(const Good&) noexcept { std::cout << "Non-throwing copy constructor called\n"; } }; int main() { Good g; Bad b; Good g2 = std::move_if_noexcept(g); Bad b2 = std::move_if_noexcept(b); }
Let us compile and run the above program, this will produce the following result −
Non-throwing move constructor called Throwing copy constructor called
utility.htm
Advertisements