Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. template <typename F, typename T>
  5. requires
  6. std::is_pointer_v<F> &&
  7. std::is_convertible_v<
  8. std::remove_pointer_t<F>,
  9. T
  10. >
  11. void my_move(F from, T& to)
  12. {
  13. std::cout << "my_move(" << *from << " -> " << to << ") v1" << std::endl;
  14. to = *from;
  15. }
  16.  
  17. template <typename F, typename T>
  18. requires
  19. !std::is_pointer_v<F> &&
  20. std::is_convertible_v<F, T>
  21. void my_move(F from, T& to) {
  22. std::cout << "my_move(" << from << " -> " << to << ") v2" << std::endl;
  23. to = from;
  24. }
  25.  
  26. int main() {
  27. int x = 42;
  28. short y = 100;
  29. my_move(&x, y);
  30. std::cout << "y = " << y << std::endl;
  31.  
  32. x = 46;
  33. my_move(x, y);
  34. std::cout << "y = " << y << std::endl;
  35.  
  36. return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement