Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- QByteArray data; // (this works just like std::vector<char>)
- std::vector<std::any> values = ExtractData<float, char>(data); // read a float, char sequentially from data
- float readFloat = std::any_cast<float>(values[0]);
- float readChar = std::any_cast<char>(values[1]);
- float readFloat;
- char readChar;
- std::tie(readFloat, readChar) = ExtractData<float, char>(data);
- using anyVec = std::vector<std::any>;
- // one type resolution
- template<typename T>
- anyVec ExtractData(const QByteArray& data, anyVec out = {}){
- // extract T value, assign to std::any, push_back into out
- return outVec;
- }
- // multiple types resolution
- template<typename T, typename... Rest>
- typename std::enable_if<(sizeof...(Rest) > 0), anyVec>::type
- ExtractData(const QByteArray& data, anyVec out = {}){
- // extract T value, assign to std::any, push_back into out
- return ExtractData<Rest...>(data, out);
- }
Add Comment
Please, Sign In to add comment