Advertisement
Guest User

Untitled

a guest
Dec 19th, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. #include <iterator>
  2. #include <type_traits>
  3.  
  4. template<class Iterator>
  5. using move_if_noexcept_iterator = typename std::conditional<
  6. !std::is_nothrow_move_constructible<
  7. typename std::iterator_traits<Iterator>::value_type
  8. >::value && std::is_copy_constructible<
  9. typename std::iterator_traits<Iterator>::value_type
  10. >::value,
  11. Iterator,
  12. std::move_iterator<Iterator>
  13. >::type;
  14.  
  15. template<class Iterator>
  16. constexpr move_if_noexcept_iterator<Iterator> make_move_if_noexcept_iterator(Iterator i) {
  17. return move_if_noexcept_iterator<Iterator>(i);
  18. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement