mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2024-11-12 21:09:01 +00:00
add move_if_noexcept
This commit is contained in:
parent
29b7bc7c06
commit
1766ed43a4
1 changed files with 14 additions and 2 deletions
|
@ -9,8 +9,20 @@ namespace sprout {
|
||||||
// move
|
// move
|
||||||
//
|
//
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline SPROUT_CONSTEXPR typename std::remove_reference<T>::type&& move(T&& t) SPROUT_NOEXCEPT {
|
inline SPROUT_CONSTEXPR typename std::remove_reference<T>::type&& move(T&& x) SPROUT_NOEXCEPT {
|
||||||
return static_cast<typename std::remove_reference<T>::type&&>(t);
|
return static_cast<typename std::remove_reference<T>::type&&>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// move_if_noexcept
|
||||||
|
//
|
||||||
|
template<typename T>
|
||||||
|
inline SPROUT_CONSTEXPR typename std::conditional<
|
||||||
|
!std::is_nothrow_move_constructible<T>::value && std::is_copy_constructible<T>::value,
|
||||||
|
T const&,
|
||||||
|
T&&
|
||||||
|
>::type move_if_noexcept(T& x) SPROUT_NOEXCEPT {
|
||||||
|
return sprout::move(x);
|
||||||
}
|
}
|
||||||
} // namespace sprout
|
} // namespace sprout
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue