Bladeren bron

Noexcept of scope guard mctors updated to P0052R5 (#49).

main
offa 7 jaren geleden
bovenliggende
commit
7b96c2afee
3 gewijzigde bestanden met toevoegingen van 12 en 6 verwijderingen
  1. +4
    -2
      include/scope_exit.h
  2. +4
    -2
      include/scope_fail.h
  3. +4
    -2
      include/scope_success.h

+ 4
- 2
include/scope_exit.h Bestand weergeven

template<class T = EF, template<class T = EF,
std::enable_if_t<std::is_nothrow_move_constructible<T>::value, int> = 0 std::enable_if_t<std::is_nothrow_move_constructible<T>::value, int> = 0
> >
scope_exit(scope_exit&& other) : m_exitFunction(std::move(other.m_exitFunction)),
scope_exit(scope_exit&& other) noexcept(std::is_nothrow_move_constructible<T>::value || std::is_nothrow_copy_constructible<T>::value)
: m_exitFunction(std::move(other.m_exitFunction)),
m_execute_on_destruction(other.m_execute_on_destruction) m_execute_on_destruction(other.m_execute_on_destruction)
{ {
other.release(); other.release();
template<class T = EF, template<class T = EF,
std::enable_if_t<!std::is_nothrow_move_constructible<T>::value, int> = 0 std::enable_if_t<!std::is_nothrow_move_constructible<T>::value, int> = 0
> >
scope_exit(scope_exit&& other) : m_exitFunction(other.m_exitFunction),
scope_exit(scope_exit&& other) noexcept(std::is_nothrow_move_constructible<T>::value || std::is_nothrow_copy_constructible<T>::value)
: m_exitFunction(other.m_exitFunction),
m_execute_on_destruction(other.m_execute_on_destruction) m_execute_on_destruction(other.m_execute_on_destruction)
{ {
other.release(); other.release();

+ 4
- 2
include/scope_fail.h Bestand weergeven

template<class T = EF, template<class T = EF,
std::enable_if_t<std::is_nothrow_move_constructible<T>::value, int> = 0 std::enable_if_t<std::is_nothrow_move_constructible<T>::value, int> = 0
> >
scope_fail(scope_fail&& other) : m_exitFunction(std::move(other.m_exitFunction)),
scope_fail(scope_fail&& other) noexcept(std::is_nothrow_move_constructible<T>::value || std::is_nothrow_copy_constructible<T>::value)
: m_exitFunction(std::move(other.m_exitFunction)),
m_execute_on_destruction(other.m_execute_on_destruction), m_execute_on_destruction(other.m_execute_on_destruction),
m_uncaught_on_creation(uncaught_exceptions()) m_uncaught_on_creation(uncaught_exceptions())
{ {
template<class T = EF, template<class T = EF,
std::enable_if_t<!std::is_nothrow_move_constructible<T>::value, int> = 0 std::enable_if_t<!std::is_nothrow_move_constructible<T>::value, int> = 0
> >
scope_fail(scope_fail&& other) : m_exitFunction(other.m_exitFunction),
scope_fail(scope_fail&& other) noexcept(std::is_nothrow_move_constructible<T>::value || std::is_nothrow_copy_constructible<T>::value)
: m_exitFunction(other.m_exitFunction),
m_execute_on_destruction(other.m_execute_on_destruction), m_execute_on_destruction(other.m_execute_on_destruction),
m_uncaught_on_creation(other.m_uncaught_on_creation) m_uncaught_on_creation(other.m_uncaught_on_creation)
{ {

+ 4
- 2
include/scope_success.h Bestand weergeven

template<class T = EF, template<class T = EF,
std::enable_if_t<std::is_nothrow_move_constructible<T>::value, int> = 0 std::enable_if_t<std::is_nothrow_move_constructible<T>::value, int> = 0
> >
scope_success(scope_success&& other) : m_exitFunction(std::move(other.m_exitFunction)),
scope_success(scope_success&& other) noexcept(std::is_nothrow_move_constructible<T>::value || std::is_nothrow_copy_constructible<T>::value)
: m_exitFunction(std::move(other.m_exitFunction)),
m_execute_on_destruction(other.m_execute_on_destruction), m_execute_on_destruction(other.m_execute_on_destruction),
m_uncaught_on_creation(uncaught_exceptions()) m_uncaught_on_creation(uncaught_exceptions())
{ {
template<class T = EF, template<class T = EF,
std::enable_if_t<!std::is_nothrow_move_constructible<T>::value, int> = 0 std::enable_if_t<!std::is_nothrow_move_constructible<T>::value, int> = 0
> >
scope_success(scope_success&& other) : m_exitFunction(other.m_exitFunction),
scope_success(scope_success&& other) noexcept(std::is_nothrow_move_constructible<T>::value || std::is_nothrow_copy_constructible<T>::value)
: m_exitFunction(other.m_exitFunction),
m_execute_on_destruction(other.m_execute_on_destruction), m_execute_on_destruction(other.m_execute_on_destruction),
m_uncaught_on_creation(other.m_uncaught_on_creation) m_uncaught_on_creation(other.m_uncaught_on_creation)
{ {

Laden…
Annuleren
Opslaan