Guest User

Untitled

a guest
Sep 23rd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. QByteArray data; // (this works just like std::vector<char>)
  2. std::vector<std::any> values = ExtractData<float, char>(data); // read a float, char sequentially from data
  3. float readFloat = std::any_cast<float>(values[0]);
  4. float readChar = std::any_cast<char>(values[1]);
  5.  
  6. float readFloat;
  7. char readChar;
  8. std::tie(readFloat, readChar) = ExtractData<float, char>(data);
  9.  
  10. using anyVec = std::vector<std::any>;
  11.  
  12. // one type resolution
  13. template<typename T>
  14. anyVec ExtractData(const QByteArray& data, anyVec out = {}){
  15. // extract T value, assign to std::any, push_back into out
  16. return outVec;
  17. }
  18.  
  19. // multiple types resolution
  20. template<typename T, typename... Rest>
  21. typename std::enable_if<(sizeof...(Rest) > 0), anyVec>::type
  22. ExtractData(const QByteArray& data, anyVec out = {}){
  23. // extract T value, assign to std::any, push_back into out
  24. return ExtractData<Rest...>(data, out);
  25. }
Add Comment
Please, Sign In to add comment