mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2024-12-23 21:25:49 +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
|
||||
//
|
||||
template<typename T>
|
||||
inline SPROUT_CONSTEXPR typename std::remove_reference<T>::type&& move(T&& t) SPROUT_NOEXCEPT {
|
||||
return static_cast<typename std::remove_reference<T>::type&&>(t);
|
||||
inline SPROUT_CONSTEXPR typename std::remove_reference<T>::type&& move(T&& x) SPROUT_NOEXCEPT {
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue