Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. auto new_foo(std::size_t size) -> std::tuple<std::unique_ptr<char>, int*>
  2. {
  3. auto buffer = std::make_unique<char>(size * sizeof(int) + 8);
  4. auto begin = static_cast<int*>(static_cast<void*>(buffer.get() + 4));
  5. return std::make_tuple(std::move(buffer), begin);
  6. }
  7.  
  8. struct X {
  9. std::unique_ptr<char> buffer_{nullptr};
  10. int* begin_{nullptr};
  11. std::size_t size_{0};
  12.  
  13. X(std::size_t size) : size_{size}
  14. {
  15. auto foo = new_foo(size);
  16. buffer_ = std::unique_ptr<char>{std::get<0>(foo)};
  17. begin_ = std::get<1>(foo);
  18. }
  19. };
  20.  
  21. X(std::size_t size)
  22. : buffer_{ ??? },
  23. begin_{ ??? },
  24. size_{size}
  25. {
  26. }
  27.  
  28. X(std::size_t size)
  29. : buffer_{std:get<0>(new_foo(size)},
  30. begin_{std:get<1>(new_foo(size)},
  31. size_{size}
  32. {
  33. }
  34.  
  35. auto {x,y,z} = f();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement