c++17 新特性要如何修改,让vs2015支持
//这段代码,需要怎么修改。让vs2015可以运行。
for (auto &item : data) {
if (!item.DeSerialize(this)) {
return false;
}
}
// Deserialize data.
bool DeSerializeSize(int32_t *data);
bool DeSerializeSkip(size_t size = 1);
bool DeSerialize(std::string &data);
bool DeSerialize(std::vector<char> &data);
//bool DeSerialize(std::vector<std::string> &data);
template <typename T>
bool DeSerialize(T *data, size_t count = 1) {
return FReadEndian(data, sizeof(T), count) == count;
}
template <typename T>
bool DeSerialize(std::vector<T> &data) {
uint32_t size;
if (!DeSerialize(&size)) {
return false;
} else if (size == 0) {
data.clear();
} else if (size > 50000000) {
// Arbitrarily limit the number of elements to protect against bad data.
return false;
} else if (std::is_same<T, std::string>::value) {
// Deserialize a string.
// TODO: optimize.
data.resize(size);
//for (auto &item : data) {
for (auto item = data.begin(); item != data.end(); item++)
{
if (!DeSerialize(*item)) {
return false;
}
}
} else if (std::is_class<T>::value) {
// Deserialize a tesseract class.
// TODO: optimize.
data.resize(size);
//这段代码,需要怎么修改。
for (auto &item : data) {
if (!item.DeSerialize(this)) {
return false;
}
}
} else if (std::is_pointer<T>::value) {
// Deserialize pointers.
// TODO: optimize.
data.resize(size);
for (uint32_t i = 0; i < size; i++) {
uint8_t non_null;
if (!DeSerialize(&non_null)) {
return false;
}
if (non_null) {
typedef typename std::remove_pointer<T>::type ST;
std::remove_pointer<T>::type *item = new ST;
if (!item->DeSerialize(item)) {
delete item;
return false;
}
data[i] = item;
}
}
} else {
// Deserialize a non-class.
// TODO: optimize.
data.resize(size);
return DeSerialize(&data[0], size);
}
return true;
}
...全文
相关推荐
VS2015搭建C++编译环境
### VS2015搭建C++编译环境详解#### 一、概述本文将详细介绍如何在Visual Studio 2015中搭建C++编译环境,并通过一个简单的示例来展示基本的操作流程。
C++程序在Windows系统上启动失败与运行卡死问题排查实战
C++程序在Windows系统上启动失败与运行卡死项目问题排查实战。
VS2015编译的log4cpp动态库
VS2015是一款强大的开发工具,支持C++11标准,具有丰富的调试和性能分析功能,因此这个库在Windows开发环境中应该是可以直接使用的。
gyp 支持最新vs2015
**VS2015的兼容性:**在GYP支持VS2015之前,开发者可能需要手动调整项目设置来适应新版本的IDE。VS2015引入了C++14标准的部分支持,增强了对并行构建的处理,以及更好的调试工具。
VS2015编译器
VS2015编译器在C++11、C++14标准支持方面表现出色。它引入了诸如右值引用、自动类型推断(auto)、lambda表达式等新特性,显著提升了代码的可读性和效率。


