fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. struct MinimalObj {
  8. int id; // NOLINT(misc-non-private-member-variables-in-classes)
  9.  
  10. // Draft check for leaks, double-frees and non-inits.
  11. // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
  12. std::string data = std::string(500U, 'x');
  13.  
  14. explicit MinimalObj(int id_) : id(id_) {}
  15. MinimalObj(MinimalObj &&) = default;
  16. MinimalObj &operator=(MinimalObj &&) = default;
  17.  
  18. MinimalObj(const MinimalObj &) = delete;
  19. MinimalObj &operator=(const MinimalObj &) = delete;
  20.  
  21. ~MinimalObj() = default;
  22. };
  23.  
  24. template<class T>
  25. void func(T&a, T&b)
  26. {
  27. if constexpr(is_move_assignable<T>::value)
  28. {
  29. a = std::move(b);
  30. }
  31. else
  32. {
  33. a = b;
  34. }
  35. }
  36.  
  37. int main(int argc, char * argv[])
  38. {
  39. MinimalObj d(1), q(2);
  40. func(d,q);
  41. }
  42.  
  43.  
Success #stdin #stdout 0s 4648KB
stdin
Standard input is empty
stdout
Standard output is empty